diff --git a/README.md b/README.md index c535d3358b70496ed364fd358c21b2a58bc8cbfb..e36a46872acb28fb71284551f7aa3cde3d2e03a9 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # pyautoTest Web & APP UI 和接口自动化项目 ### 特点 - 2.0 版本目前支持远程,并发测试 + 新版本目前简化了分布式配置,抛弃掉并发测试,分离客户端脚本进行分布式测试。 + 客户端地址:https://gitee.com/zhang-zewang/pyautotest-client #### WEB UI * 全局配置浏览器启动/关闭。 * 远程分布式执行测试。 -* 并发测试。 * 测试用例运行失败自动截图。 * 测试用例运行失败可以重跑。 * 测试数据参数化。 @@ -13,13 +13,11 @@ * 全局配置网络请求会话。 * 测试用例之间数据重用 * 远程分布式测试。 -* 并发测试。 * 测试用例运行失败可以重跑。 * 测试数据参数化。 #### APP UI * 全局配置APP启动/关闭。 * 测试用例运行失败自动截图。 -* 并发测试(未测试)。 * 测试用例运行失败可以重跑。 * 测试数据参数化。 ### 安装 @@ -77,180 +75,9 @@ $ pip install -r requirements.txt 测试启动文件 ### 配置 -在 `config.py` 文件配置 + 请参考config.py文件进行配置 -```python -class RunConfig: - """ - 运行测试配置 - """ - # 运行测试用例的目录或文件 - UI_cases_path = os.path.join(PRO_PATH, "test_dir/test_UI", "test_baidu.py") - API_cases_path = os.path.join(PRO_PATH, "test_dir/test_API", "test_api_baidu.py") - APP_cases_path = os.path.join(PRO_PATH, "test_dir/test_APP", "test_wx.py") - - # 配置浏览器驱动类型(chrome/firefox/chrome-headless/firefox-headless)。 - driver_type = "chrome-headless" - # driver_type = "chrome" - - # 配置元素超时时间 - timeout = 10 - - # 失败重跑次数 - rerun = "0" - - # 当达到最大失败数,停止执行 - max_fail = "5" - - # 浏览器驱动(不需要修改) - driver = None - - # app 驱动(不需要修改) - app_driver = None - - # 报告路径(不需要修改) - NEW_REPORT = None - - # 项目日志配置 - UI_LOG_DIR = PRO_PATH + "/logs/UI/" - API_LOG_DIR = PRO_PATH + "/logs/API/" - APP_LOG_DIR = PRO_PATH + "/logs/APP/" - - # 邮件发件人(邮箱配置地址::邮箱::密码) - SEND_USER = '' - - # 邮件收件人 - RECE_USERS = [] - - # API 结果状态码与返回结果(不需要修改) - API_RESULT_CODE = None - API_RESULT = None - - # 标记执行类型(不需要修改,命令行中指定) - RUN = None - - # UI测试环境配置标记(不需要修改,程序内部使用) - # 默认为测试环境,可以使用命令行 -istest=False 或 -istest=0 - # 切换到正式环境 - ISTEST = True - - # 钉钉消息被@人电话号码。 - atMobiles = [] - - # mysql 数据库配置,当数据库配置为空,或者没有此项配置时程序将不会初始化mysql链接。 - # MySQL = { - # 'host': '127.0.0.1', - # 'port': 3306, - # 'user': 'root', - # 'password': '123456', - # 'database': 'test', - # } - MySQL= {} - # app name - app_name = '' - # appium启动配置 - desired_caps = { - 'platformName': 'Android', # 设备类型; - 'platformVersion': '7', # 设备的类型的版本号,如果是安卓,填写大的版本号即可,小数不用填; - 'deviceName': 'MI9', # 设备的名称,这个和后续的测试没有多大关系; - 'appPackage': 'com.tencent.mm', # 需要测试的app包名; - 'appActivity': 'com.tencent.mm.ui.LauncherUI', # 需要测试的app启动名; - # 'unicodeKeyboard': True, # 如果指定了UI2作为驱动,不需要配置; - # 'resetKeyboard': True, # 重置自动化时设置的键盘; - # 'chromedriverExecutableDir': '路径', # 启动webview的webdriver驱动 - 'noReset': True, # 防止每次启动app时候都初始化所有数据; - # 'newCommandTimeout': 6000, # 代码向appiumserver发送命令的延迟时间,单位是秒,不设置默认一分钟; - # 'automationName': 'uiautomator2', # 这个并不是所有应用都适配的,1.15.1以前默认是UI1,之后是默认UI2;IOS: XCUITest;也可直接使用appium - 'autoGrantPermissions': True, # 自动跳过授权 - 'skipServerInstallation': True, - 'skipDeviceInitialization': True, # 跳过安装AppiumSetting,初次测试请改为False。 - }class RunConfig: - """ - 运行测试配置 - """ - # 运行测试用例的目录或文件 - UI_cases_path = os.path.join(PRO_PATH, "test_dir/test_UI", "test_baidu.py") - API_cases_path = os.path.join(PRO_PATH, "test_dir/test_API", "test_api_baidu.py") - APP_cases_path = os.path.join(PRO_PATH, "test_dir/test_APP", "test_wx.py") - - # 配置浏览器驱动类型(chrome/firefox/chrome-headless/firefox-headless)。 - driver_type = "chrome-headless" - # driver_type = "chrome" - - # 配置元素超时时间 - timeout = 10 - - # 失败重跑次数 - rerun = "0" - - # 当达到最大失败数,停止执行 - max_fail = "5" - - # 浏览器驱动(不需要修改) - driver = None - - # app 驱动(不需要修改) - app_driver = None - - # 报告路径(不需要修改) - NEW_REPORT = None - - # 项目日志配置 - UI_LOG_DIR = PRO_PATH + "/logs/UI/" - API_LOG_DIR = PRO_PATH + "/logs/API/" - APP_LOG_DIR = PRO_PATH + "/logs/APP/" - - # 邮件发件人(邮箱配置地址::邮箱::密码) - SEND_USER = '' - - # 邮件收件人 - RECE_USERS = [] - - # API 结果状态码与返回结果(不需要修改) - API_RESULT_CODE = None - API_RESULT = None - - # 标记执行类型(不需要修改,命令行中指定) - RUN = None - - # UI测试环境配置标记(不需要修改,程序内部使用) - # 默认为测试环境,可以使用命令行 -istest=False 或 -istest=0 - # 切换到正式环境 - ISTEST = True - - # 钉钉消息被@人电话号码。 - atMobiles = [] - - # mysql 数据库配置,当数据库配置为空,或者没有此项配置时程序将不会初始化mysql链接。 - # MySQL = { - # 'host': '127.0.0.1', - # 'port': 3306, - # 'user': 'root', - # 'password': '123456', - # 'database': 'test', - # } - MySQL= {} - # app name - app_name = '' - # appium启动配置 - desired_caps = { - 'platformName': 'Android', # 设备类型; - 'platformVersion': '7', # 设备的类型的版本号,如果是安卓,填写大的版本号即可,小数不用填; - 'deviceName': 'MI9', # 设备的名称,这个和后续的测试没有多大关系; - 'appPackage': 'com.tencent.mm', # 需要测试的app包名; - 'appActivity': 'com.tencent.mm.ui.LauncherUI', # 需要测试的app启动名; - # 'unicodeKeyboard': True, # 如果指定了UI2作为驱动,不需要配置; - # 'resetKeyboard': True, # 重置自动化时设置的键盘; - # 'chromedriverExecutableDir': '路径', # 启动webview的webdriver驱动 - 'noReset': True, # 防止每次启动app时候都初始化所有数据; - # 'newCommandTimeout': 6000, # 代码向appiumserver发送命令的延迟时间,单位是秒,不设置默认一分钟; - # 'automationName': 'uiautomator2', # 这个并不是所有应用都适配的,1.15.1以前默认是UI1,之后是默认UI2;IOS: XCUITest;也可直接使用appium - 'autoGrantPermissions': True, # 自动跳过授权 - 'skipServerInstallation': True, - 'skipDeviceInitialization': True, # 跳过安装AppiumSetting,初次测试请改为False。 - -``` -**注:2.0 版本新增加部分远程与并发配置,请下载项目后查看注释。** +**注:新版本去掉并发测试,简化了分布式测试方式,请下载项目后查看注释。** ### 运行 @@ -270,13 +97,12 @@ $ python run_tests.py -rt api -istest false (回归模式,生成HTML报告)( $ python run_tests.py -m debug -rt =api (调试模式) ``` -#### APP -**(目前仅支持window本地进行app测试,或者启用Linux中的appium服务进行本地测试)** +#### APP ```shell $ python run_tests.py -rt app (回归模式,生成HTML报告) $ python run_tests.py -m debug -rt =app (调试模式) ``` ### 目前遗留问题 - 1、目前配置mysql,启动时会随着子进程/worker数量,启动相应数量的链接会话,不能复用一个会话。 + 无 ### 下一步计划 1、开发自动化测试平台。 \ No newline at end of file