1. 框架的可配置性
项目之间的区别:
- 兼容性:有些项目只兼容chrome,有些只兼容Firefox等
- 元素定位特点:有些项目闪现快,有的项目很慢
- 有些项目集成Jenkins,不需要用python生成allure报告
如果想要我们的框架在运用到一个新项目的时候,只需要修改一些配置文件,就需要我们框架本身就支持这些配置
2. 如何实现项目配置
三种方式
- 启动参数
- 配置文件
- 环境变量(容器化)
2.1 找出配置项
- driver_type:浏览器类型
- wait_max:最长等待时间
- wait_poo:最短的等待时间(频率)
- allure_gen:是否生成allure报告
- allure_show:是否自动打开allure报告
- allure_path:指定allure报告的路径
- 其它在代码中写的.....
2.2 保存到配置文件
为了不再生成更多文件导致管理混乱,我们可以在pytest.ini文件中新增一个条目用来保存我们的配置
其中,pytest条目下是pytest框架的配置,uitest下是我们ui自动化测试的配置
2.3 从配置文件中加载配置项
在core目录下创建settings.py
from configparser import SafeConfigParserfrom iniconfig import IniConfigBOOLEAN_STATES = SafeConfigParser.BOOLEAN_STATESdef load_uitest_ini(file):ini = IniConfig(file) # 加载文件内容ui_ini = ini['uitest']d = {"driver_type": ui_ini.get("driver_type", "chrome"),"wait_max": float(ui_ini.get("wait_max", "10")),"wait_poo": float(ui_ini.get("wait_poo", "0.5")),"allure_gen": BOOLEAN_STATES[ui_ini.get("allure_gen", "true")],"allure_show": BOOLEAN_STATES[ui_ini.get("allure_show", "true")],"allure_path": ui_ini.get("allure_show", "report"),}return ui_inisettings = load_uitest_ini(r'D:\pythonProject2\pytest.ini') # 配置项目设置为全局变量
2.4 使用配置
首先from core.settings import settings去导入配置,然后使用,举例我们的main.py可以修改为:
import osimport pytest
from core.settings import settingsif __name__ == '__main__':os.environ['NO_COLOR'] = '1'pytest.main()report=settings["allure_path"]if settings["allure_gen"]:os.system(f"allure generate ./temp/allure_results -o {report} --clean") # 生成报告if settings["allure_show"]:os.system(f"allure open {report}") # 展示报告
举例:使用配置——浏览器驱动,修改conftest.py中的driver
@pytest.fixture(scope='module') # 这里设置scope=module是因为如果为函数级别的话,我们在test_user中第1个用例如果关闭了浏览器第二个用例就需要重新登录
def driver():driver = get_webdriver(settings["driver_type"])driver.implicitly_wait(5)driver.maximize_window()yield driverdriver.quit()
其它想要配置的选项可以根据以上示例进行添加即可。
3. selenium Grid
Grid组件让selenium支持分布式,用于分布式自动化测试,通过控制多台机器、多个浏览器并行执行测试用例,在测试用例比较多的情况下比较实用。
3.1 本地搭建Grid
配置JDK运行环境(自行百度吧,最好装高版本的,防止和selenium-server不兼容,安装好后在命令行使用Java -version验证下);
需要安装 Selenium Server 的 Jar 文件,下载地址:https://www.selenium.dev/downloads/
最后,在放置selenium-server的位置打开终端,通过命令行启动 Selenium Grid Server
java -jar selenium-server-4.16.1.jar standalone
其中selenium-server-4.16.1.jar是下载的selenium-server的文件名,启动后显示如下:
会有一个链接,点击后在浏览器会显示selenium-grid
图上sessins表示现在的任务数。
3.2 使用Grid中的浏览器
在项目新建a.py,
from selenium.webdriver import Chrome, Remote
from selenium.webdriver.chrome.options import Options as ChromeOptionsdriver = Remote(command_executor='http://192.168.3.16:4444/wd/hub',options=ChromeOptions())
driver.get("https://baidu.com")
input()
运行后会看到selenium-grid中session变成1