python 项目目录结构
MobileAutomation 项目结构
MobileAutomation
├─ Basefunctest
│ │ __init__.py
│ │
│ ├─ iOS
│ │ │ conftest.py
│ │ │ main.py
│ │ │ test_create_blank_pdf.py
│ │ │ test_file_to_pdf.py
│ │ │ test_merge_pdf.py
│ │ │ test_scan.py
│ │ │ test_web_to_pdf.py
│ │ │ __init__.py
│ │ │
│ │ ├─ common
│ │ │ data_operator.py
│ │ │ func_operator.py
│ │ │ web_operator.py
│ │ │ __init__.py
│ │ │
│ │ └─ page
│ │ │ base_page.py
│ │ │ blank_pdf_page.py
│ │ │ file_content_page.py
│ │ │ locator.py
│ │ │ main_page.py
│ │ │ page_operator.py
│ │ │ scan_page.py
│ │ │ web_to_pdf_page.py
│ │ │ __init__.py
│ │ │
│ │ └─ report
│ │ │ allure_report
│ │ │ allure_result_file
│ │ │
│ └─ tools
│ └─ allure-2.13.9
│ ├─ bin
│ │ allure
│ │ allure.bat
│ │
│ ├─ config
│ │ allure-cucumber.yml
│ │ allure-junit.yml
│ │ allure.yml
│ │
测试入口的 main.py
import os
import shutil
from common import data_operator
from common import func_operator
if __name__ == '__main__':
report_path = os.path.join(data_operator.WORK_SPACE, 'Basefunctest', 'iOS', 'report')
print(f"report_path:{report_path}")
if os.path.exists(report_path):
shutil.rmtree(report_path)
os.mkdir(report_path)
allure_result_file = './report/allure_result_file'
allure_report = './report/allure_report'
execute_str = f"python3 -m pytest --alluredir {allure_result_file}"
environ_dict = os.environ
build_url = environ_dict.get('BUILD_URL')
print(f"jenkins build url:{build_url}")
if build_url:
allure_url = ''.join([build_url, 'allure'])
print(f"jenkins allure url:{allure_url}")
os.system(execute_str)
else:
ip = func_operator.get_host_ip()
port = func_operator.get_free_port(8000, 9000)
print(f"allure server port:{port}")
allure_path = '../tools/allure-2.13.9/bin/allure'
os.system(execute_str)
os.system(f"{allure_path} generate {allure_result_file} -o {allure_report} --clean")
os.system(f"{allure_path} open -h {ip} -p {port} {allure_report}")
jenkins 配置
新建一个节点
当前测试的 iOS 工程需要在 mac 电脑上跑,所以需要在 mac 上搭建一个节点。
启动节点
新建一个项目
配置要运行的节点标签
配置git
添加密码,创建子目录(名字为git的项目名)。其中有一些配置是需要安装jenkins 插件的。
配置build
选择了用shell脚本的方式触发测试
配置allure插件
和项目中的 main.py 文件中的代码相匹配:测试产生的 allure 文件存在路径、生成报告的路径
展示
|