Pytest框架运行方式(主函数、命令行、配置、执行顺序)

一、pytest单元测试框架

(1)什么是单元测试框架

单元测试是指在软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试。

(2)单元测试框架

java: junit 和testng

python: unittest 和 pytest

(3)单元测试框架主要做什么?

  1. 测试发现:从多个文件里面去找到我们测试用例

  2. 测试执行:按照一定的顺序和规则去执行。并生成结果

  3. 测试判断:通过断言判断预期结果和实际结果的差异

  4. 测试报告:统计测试进度,耗时,通过率,生成测试报告

二、单元测试框架和自动化测试框架有什么关系?

(1)什么是自动化测试框架

(2)作用

  1. 提高测试效率,降低维护成本

  2. 减少人工干预,提高测试的准确性,增加代码的重用性

  3. 核心思想是让不懂代码的人也能够通过这个框架去实现自动化测试

单元测试框架:只是自动化测试框架中的组成部分之一

pom设计模式:只是自动化测试框架中的组成部分之一

数据驱动

关键字驱动

全局配置文件的封装

日志监控

selenium,request二次封装

断言

报告邮件

等等。。。。。

 

三、pytest简介

  1. pytest是一个非常成熟的python的单元测试框架,比unittest更灵活,容易上手。

  2. pytest可能和selenium,requests,appium结合实现web自动化,接口自动化,app自动化

  3. pytest可以实现测试用例的跳过以及retuns失败用例重试。

  4. pytest可以的allure生成非常完美的测试报告

  5. pytest可以和Jenkins持续集成。

  6. pytest有很多非常强大的插件,并且这些插件能够实现很多的实用的操作

pytest
pytest-xdist    测试用例分布执行,多cpu分发
pytest-ordering  用于改变测试用例的执行顺序
pytest-rerunfailures    用例失败后重跑
pytest-html    生成html格式的自动化测试报告
allure-pytest    用于生成美观的测试报告
将以上这些放到requirements.txt中,通过 pip install -r requirements.txt安装
 

四、使用pytest,默认的测试用例的规则以及基础应用

  1. 模块名必须以test_开头或者_test结尾

  2. 测试类必须以Test开头,并且不能用init方法

  3. 测试方法必须以test开头

 

五、pytest测试用例的运行方式

  1. 主函数模式

    (1)运行所有:pytest.main()

            (2)指定模块:pytest.main(['-vs','test_login.py'])

            (3)指定目录:pytest.main(['-vs','./interface_testcase'])

            (4)通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成

pytest.main(['-vs','./interface_testcase/test_interface.py::test_04_func']) 
pytest.main('-vs','./interface_testcase/test_interface.py::Testinterface::test_03_zhiliao')

      2. 命令行模式:

        (1)运行所有:pytest

          (2)指定模块:pytest -vs test_login.py

          (3)指定目录:pytest -vs ./interface_testcase

          (4) 指定目录: pytest -vs ./interface_testcase/test_interface.py::test_04_func 

参数详解:

-s : 表示输出调试信息,包括print打印的信息

-v: 显示更详细的信息

-vs : 这两个参数可以一起用

-n : 支持多线程或者分布式运行测试用例

如pytest -vs ./testcase/test_login.py -n 2 (指两个线程)

-reruns NUM :失败用例重跑

-x : 表示只要一个用例报错,那么测试停止

--maxfail=2 出现两个用例失败就停止

-k : 根据测试用例的部分字符串指定测试用例。

如:pytest -vs ./testcase -k "ao" (指只运行以关键字ao的用例)

--html ./report/report.html : 生成html的测试报告

 

3. 通过读取pytest.init这个文件字是pytest单元测试框架的核心配置文件

(1)位置:一般放在项目的根目录

(2)编码:必须是ANSI,可以使用编辑器如notepad++修改编码格式

(3)作用:改变pytest默认的行为

(4)运行的规则:不管是主函数的模式运行,命令行模式运行,都会去读取这个配置文件

[pytest]
addopts = -vs      #命令行的参数,用空格分隔
testpaths = ./testcase      #测试用例的路径
python_files = test_*py    #模块名的规则
python_classes = Test*    #类名的规则
python_functions = test   #方法名的规则

六、pytest执行测试用例的顺序是怎样的呢?

unittest: ascll的大小来绝定执行的顺序
pytest: 默认从上到下
改变默认的执行顺序: 使用mark标记
@pytest.mark.run(order=3)

七、如果分组执行(冒烟,分模块执行,分接口和web执行)

smoke: 冒烟用例,分布在各个模块里面
pytest -m "smoke"
pytest -m "smoke or usermanager or prodectmanage"

八、pytest跳过测试用例

  1. 无条件跳过
@pytest.mark.skip(reason="就是要跳过你,没原因")
         2.有条件跳过
@pytest.mark.skipif(age>=18,reason='已成年的跳过')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

三十六般武艺,七十二般变化,修练出个人品牌并发出光芒
原文地址:https://www.cnblogs.com/deeptester-vv/p/14844205.html