【python实战3】-测试报告定制

数据驱动

  • 测试数据的数据驱动
  • 测试步骤的数据驱动

yaml

https://www.ruanyifeng.com/blog/2016/07/yaml.html

https://yaml.org/spec/1.1/#id857168

https://pyyaml.org/wiki/PyYAMLDocumentation

allure2

allure2解析过程

  • 安装allure2
  • 生成allure测试结果 pytest --alluredir=allure .
  • 展示报告 allure serve allure/
  • 生成最终版本的报告 allure generate allure/

使用allure2提供的api,增强报告

  • 截图
  • 录像
  • 日志
  • 链接
  • 步骤

不能在类里使用__init__()方法初始化参数数据么

pytest不允许测试类出现初始化方法,不然整个类就不会被当成测试类

测试步骤的数据驱动没听太明白,老师可以举一个实际的例子吗

看下咱们的selenium的录播视频的例子,里面有详细的如何定义测试步骤的数据驱动的案例

老师,allure的环境部署能说说吗,我今天搞了2次都没有成功

老师,如果在Windows下面如何启动allure进行查看报告呢?

assert 1.1 + 2.2 == 3.3

这个结果为啥是3.3000000000000003 != 3.3啊,怎么解决?

test_fixture.py
这个例子中:
yield request.param 这段代码中为什么要有yield,而且我尝试将request.param不与yield写在同一行,test_add2就会failed,为什么?

计算机是无法精确表示浮点数的,需要使用close_to这种表示接近的断言。


老师通过cmd方式可以,pycharm 中的terminal不行呢?

    def provider(self):
        for i in range(5):
            print("setup")
            yield i
            print("teardown")

    def test_yield(self):
        for d in self.provider():
            print(d)

缺少 pytest-html 依赖, 使用pycharm安装下即可

两个执行的环境不一样,一个是虚拟环境,一个是本地环境

windows下安装使用allure生成测试报告:

1,安装allure报告插件库:pip install allure-pytest

2,运行生成测试结果:pytest <测试目录> --alluredir <测试结果存放目录>,

例如:pytest test --alluredir report/allure_raw

注意:这个时候allure_law里边的内容只是测试结果(jaon,txt文件),还不是报告

3,生成漂亮的测试报告:

从allure官网(http://allure.qatools.ru/)下载最新的allure,下载后是个zip文件,解压到相关目录(我这里是D:\Software\allure\lib\)下,同事把解压后的bin目录添加到环境变量PATH中,就可以直接使用allure命令(可用Powershell试试)注意:这里需要jdk的支持,因此需要安装jdk配置环境变量

生成报告命令:allure generate <allure测试结果目录> -o <存放报告的目录> --clean

例如:allure generate report/allure_raw -o report/allure_report --clean

–clean参数用来清空已有的报告,避免覆盖是出错

查看报告注意:再pycharm中邮件index.html,Open in Browser查看,不然在文件夹中打开会出现跨域拦截,导致测试报告加载不出数据,或者用命令:allure open /report/allure_report(运行后会启动一个web服务用于展示报告)

1 个赞

老师return替换yield会报错?
图片

https://docs.qameta.io/allure/#_installing_a_commandline

参考手工安装那个过程。zip包下载地址
https://repo1.maven.org/maven2/io/qameta/allure/allure-commandline/2.13.2/

使用bin目录下的allure.bat

这个同学说的对,pycharm里的term跟外面的不一样,是用的虚拟环境。两个地方的依赖安装的可能不同。

不要替换,yield和return是不一样的作用的,参考我之前给出的yield的例子。fixture是要求使用yield的

https://github.com/fengfengrr/-/blob/master/testing/test_steps.py
老师,可以帮我看一下代码嘛 运行后测试步骤驱动和数据驱动对应不上 调用了一个加法一个除法 然后断言全部错误
这是方法和数据什么的 都在里面
https://github.com/fengfengrr/-