pytest+allure生成测试报告

接口测试采用python+pytest+requests+allure

allure-pytest 环境准备

windows环境相关:

python 3.6版本 pytest 3.6.3版本 allure-pytest 2.8.6 最新版

使用pip安装pytest和allure-pytest,加上—index-url地址,下载会快一些

pip install pytest==3.6.3 —index-url https://pypi.douban.com/simple pip install allure-pytest==2.8.6 —index-url https://pypi.douban.com/simple

安装完成之后,打开一个你之前写的pytest脚本,看能不正常使用,如果报错:AttributeError: module ‘allure’ has no attribute ‘severity_level’ 这个是之前 pytest-allure-adaptor 这个插件与 allure-pytest 不能共存,卸载掉 pytest-allure-adaptor

pip uninstall pytest-allure-adaptor

allure命令行工具

allure是一个命令行工具,需要去github上下载最新版https://github.com/allure-framework/allure2/releases

下载完成之后,解压到本地电脑

把bin目录添加到环境变量Path下

把bin目录添加到环境变量Path下

用例demo

conftest.py内容

import pytest

@pytest.fixture(scope="session")
def login():
    print("用例先登录")

test_allure_demo.py内容

 

import allure
import pytest

@allure.step("步骤1:点xxx")
def step_1():
    print("111")

@allure.step("步骤2:点xxx")
def step_2():
    print("222")

@allure.feature("编辑页面")
class TestEditPage():
    '''编辑页面'''

    @allure.story("这是一个xxx的用例")
    def test_1(self, login):
        '''用例描述:先登录,再去执行xxx'''
        step_1()
        step_2()
        print("xxx")

    @allure.story("打开a页面")
    def test_2(self, login):
        '''用例描述:先登录,再去执行yyy'''
        print("yyy")

复制

运行用例

cd到test_allure_demo.py所在的目录文件,命令行执行

pytest —alluredir ./report/allure_raw

备注:report为测试报告路径  allure_raw为生成的关于allure文件

D:\soft\code\xuexipytest>pytest --alluredir ./report/allure_raw
============================= test session starts =============================
platform win32 -- Python 3.6.0, pytest-5.3.1, py-1.5.4, pluggy-0.13.1
rootdir: D:\soft\code\xuexipytest
plugins: allure-pytest-2.8.6, forked-0.2, html-1.19.0, metadata-1.7.0, repeat-0.7.0, xdist-1.23.2
collected 9 items

case\test_allure_demo.py ..                                              [ 22%]
case\test_x.py ......                                                    [ 88%]
case\test_y.py .                                                         [100%]

============================== 9 passed in 0.21s ==============================

复制

执行完成后,在当前目录下,report目录会生成一个allure_raw的原始文件,这个只是测试报告的原始文件,不能打开成html的报告

打开html的报告需要启动allure服务,启动命令如下

allure serve report/allure_raw

启动服务,它会自动给个端口,直接用默认浏览器打开了

D:\soft\code\xuexipytest>allure serve report/allure_raw
Generating report to temp directory...
Report successfully generated to C:\Users\dell\AppData\Local\Temp\6056757827461248074\allure-report
Starting web server...
2019-12-08 00:41:09.921:INFO::main: Logging initialized @2228ms to org.eclipse.jetty.util.log.StdErrLog
Server started at <http://192.168.1.125:35346/>. Press <Ctrl+C> to exit

复制

查看报告

浏览器上打开的报告内容

点 EN 按钮可以查看中文报告

打开测试套件,可以查看报告的详情,显示的还是很详细的

上述文章参考:pytest文档29-allure-pytest(最新最全,保证能搞成功!) - 腾讯云开发者社区-腾讯云

Allure使用笔记-安装 - 腾讯云开发者社区-腾讯云


补充实操过程的坑:

1、出现了

AttributeError: module ‘allure’ has no attribute ‘severity_level’ 报错,卸载掉 pytest-allure-adaptor 重新运行会报 另一个问题:

no module named "_pytest.resultlog"

原因:因为安装了pytest-rerunfailures(这个插件是失败重跑插件),然后导致_pytest.resultlog该模块被删除

结果:不可以pytest-rerunfailures与 pytest 6.1.0以上的版本一起使用。

解决办法:
①升级pytest-rerunfailures版本到9.1.1
②卸载pytest-rerunfailures使用pytest-reportlog代替
③降低pytest版本到6.1.0以下

解决方案参考文档:记:no module named "_pytest.resultlog" - QiKa - 博客园

个人采取的解决方法是升级pytest-rerunfailures版本,上述问题确实解决

然后就是命令行运行 pytest —alluredir ./report/allure_raw  报错

 导入错误的问题,不知道问题出在哪里,未解决,转而运行 py.test运行命令

$ py.test test/ --alluredir ./result/

无果,cmd提示没有$ 指令

参考用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告 - 码农教程

采用方法3:在执行pytest命令时,添加allure命令参数:—alluredir=Outputs/allure (相对于pytest命令所在目录的测试报告目录):

if __name__ == '__main__':
    pytest.main(["-s", "-v", "--html=Outputs/test_report/pytest.html",
                                "--alluredir=Outputs/allure"])  # allure文件生成的目录

备注:Outputs/test_report/pytest.html 为测试报告生成路径 

 

 

3、等待pytest执行完所有的测试用例,在Outputs/allure下会生成一些文件。

在cmd命令行当中,执行:allure serve 测试结果文件目录,就会生成漂亮的html报告。

后面即可看到自动打开的漂亮的测试报告啦!!!!

方法三参考:allure与pytest集成配置详解_云淡风轻-测试仔的博客-优快云博客_pytest集成allure

 

<think>好的,我现在需要帮助用户了解如何使用pytestAllure和Selenium来编写UI自动化测试脚本。首先,我需要回顾用户提供的引用内容,确保回答准确并正确引用。 用户引用了四个资源,主要涉及环境搭建、框架工具、显式等待和PO模式。首先,我应该整理这些信息,分步骤说明如何创建测试脚本。 第一步,环境搭建。根据引用1和2,需要安装pytest、selenium、allure-pytest等库。需要确认安装命令是否正确,比如使用pip安装这些包。 第二步,创建测试用例。引用3提到了显式等待的使用,这部分很重要,需要在代码示例中展示如何利用WebDriverWait。同时,引用4提到了PO模式,但用户的问题可能不需要深入PO模式,但可以简要提及作为扩展。 第三步,添加Allure报告。需要说明如何在测试中使用装饰器,比如@allure.feature和@allure.story,以及生成报告的命令行步骤。 第四步,断言和测试逻辑。确保测试用例中有正确的断言,比如检查页面标题或元素是否存在。 另外,需要注意代码示例的正确性,比如WebDriverWait的使用,以及正确的导入语句。引用3中的代码示例有一个URL错误(www.TESTcsdn.com),可能需要指出或更正。 可能还需要提到目录结构,比如将测试用例放在tests目录下,使用pytest的默认发现规则。 最后,生成相关问题,涵盖环境搭建、元素定位、报告优化和PO模式等方面,帮助用户进一步学习。 需要确保回答结构清晰,分步骤说明,并正确引用来源。同时检查LaTeX格式是否符合要求,但用户的问题可能不涉及数学公式,所以可能不需要使用。但根据系统指令,所有行内数学表达式必须用$...$,但这里可能不涉及,所以重点放在代码块和引用上。</think>### 如何用 pytest + Allure + Selenium 编写 UI 自动化测试脚本 #### 1. 环境搭建 - **安装依赖库**: ```bash pip install pytest selenium allure-pytest webdriver-manager ``` 引用 pytest 作为测试框架,Selenium 用于浏览器操作,Allure 生成可视化报告[^1][^2]。 #### 2. 创建基础测试用例 ```python # test_login.py import allure import pytest from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC @allure.feature("登录功能测试") class TestLogin: @pytest.fixture(scope="class") def setup(self): driver = webdriver.Chrome() driver.maximize_window() yield driver driver.quit() @allure.story("管理员登录成功场景") def test_admin_login(self, setup): driver = setup driver.get("https://example.com/admin/login") # 显式等待输入框加载完成[^3] username = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "username")) ) username.send_keys("admin") password = driver.find_element(By.ID, "password") password.send_keys("123456") driver.find_element(By.CSS_SELECTOR, "button[type='submit']").click() # 断言登录后跳转到仪表盘页面 assert "dashboard" in driver.current_url allure.attach(driver.get_screenshot_as_png(), name="登录成功截图", attachment_type=allure.attachment_type.PNG) ``` #### 3. 配置 Allure 报告 - 在项目根目录创建 `pytest.ini`: ```ini [pytest] addopts = --alluredir=./allure-results ``` - 运行测试并生成报告: ```bash pytest test_login.py --alluredir=./allure-results allure serve ./allure-results ``` #### 4. 关键优化点 - **显式等待**:使用 `WebDriverWait` 确保元素加载完成,避免隐式等待导致的全局延迟。 - **PO模式**:可通过 `base_page.py` 封装公共方法(如元素定位、截图),提升代码复用性[^4]。 - **异常处理**:结合 `pytest.mark.xfail` 标记预期失败的用例。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值