Web自动化框架
-
java > 8
-
selenium
-
webdriver_manager webdriver-manager · PyPI
-
pytest
-
allure
配置Allure到环境变量,到path里面,E:\<ALLURE_PATH>\bin
验证:
allure --version
-
allure-pytest
allure测试报告是基于pytest运行的,运行之后生成一个json报告数据源,来实现结果
的展示,以一个工程的形态展示本次测试的所有测试结果
需要集成pytest实现allure的展示,需要安装:
pip install allure-pytest
@allure.epic() | epic描述 | 敏捷里面的概念,对用例或用例集进行描述分类 |
---|---|---|
@allure.feature() | 模块名称 | 与epic类似,只是比epic级别低 |
@allure.story() | 用户故事 | 与epic类似,只是比feature级别低 |
@allure.title(用例的标题) | 用例的标题 | 重命名html报告的用例名称 |
@allure.testcase() | 测试用例的链接地址 | 与link类似 |
@allure.issue() | 缺陷 | 与link类似 |
@allure.description() | 用例描述 | 进行测试用例的描述 |
@allure.step() | 操作步骤 | 进行测试用例的步骤 |
@allure.severity() | 用例等级 | blocker,critical,normal,minor,trivial |
@allure.link() | 链接 | 定义一个链接,在测试报告展现(推荐使用) |
Pycharm也需要重启,否则可能系统变量没更新,导致找不到命令
-
pytest.main(['-v', '--alluredir','./result','--clean-alluredir'])
-v
: 运行测试时输出详细信息。--alluredir
: 指定Allure结果文件的生成目录。在这个例子中,结果文件会被生成在当前目录的result
子目录中。--clean-alluredir
: 在生成新的结果文件之前清除旧的结果文件。
-
os.system('allure generate ./result/ -o ./report_allure/ --clean')
使用Allure命令行工具将结果文件转换为HTML报告:
./result/
: 指定结果文件的位置。这应该和上面pytest.main
函数中的--alluredir
选项相匹配。-o ./report_allure/
: 指定HTML报告的生成目录--clean
: 在生成新的HTML报告之前清除旧的HTML报告。
-
allure serve ./result/
作为web服务启动Allure报告。
Allure报告添加失败截图
使用pytest_runtest_makereport钩子函数实现allure报告添加用例失败截图
@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_makereport():
# 获取测试用例的执行结果,yield,返回一个result对象
out = yield
"""
从result对象out获取调用结果的测试报告,返回一个report对象,
report对象的属性
包括when(steup, call, teardown三个值)、nodeid(测试用例的名字)、
outcome(用例的执行结果,passed,failed)
"""
report = out.get_result()
# 仅仅获取用例call阶段的执行结果,不包含 setup/teardown
if report.when == "call":
# 获取用例call执行结果为失败的情况
xfail = hasattr(report, "wasxfail")
if (report.skipped and xfail) or (report.failed and not xfail):
# 添加allure报告截图
with allure.step("添加失败截图"):
# 使用Allure自带的添加附件的方法,三个参数分别为:源文件、文件名、文件类型
allure.attach(driver.get_screenshot_as_png(),
"失败截图", allure.attachment_type.PNG)
- 打开浏览器
- 元素定位
- 显性等待
- 发送文本并回车
- 切换窗口
- 切换标签
- 热键
NameError: name 'driver' is not defined
在截图的时候报错
解决:browser 设置 autouse=True