pytest01

一,pytest单元测试框架

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

2,单元测试框架

  java:junit和testing

  python:unitest和pytest

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

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

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

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

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

 

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

1,什么是自动化测试框架

2,作用

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

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

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

3,pytest单元测试框架和自动化测试框架的关系

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

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

  数据驱动

  关键字驱动

  全局配置文件的封装

  日志监控

  selenium,requests二次封装

  断言

  报告邮件

  更多>>>>>

 

三,pytest简介

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

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

3,pytest可以实现测试用例的跳过以及reruns失败用例重试

4,pytest可以和allure生成非常美观的测试报告

5,pytest可以和Jenkins持续集成

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

  pytest

  pytest-html (生成html格式的自动化测试报告)

  pytest-xdist (测试用例分布式执行,多cpu分发)

  pytest-ordering (用于改变测试用例的执行顺序)

  pytest-rerunfailures (用例失败后重跑)

  allure-pytest (用于生成美观的测试报告)

放到requirements.txt中,通过pip install -r  requirements.txt 安装上面的插件

查看是否安装成功;pytest --version

 

四,使用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,通过nodeid指定用例运行,nodeid有模块名,分隔符,类名,方法名,函数名组成

    pytest -vs ./interface_testcase/test_interface.py::test_04_func 

    pytest -vs ./interface_testcase/test_interface.py::Testinterface::test_03_zhiliao

参数详解;

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

  -v:显示更详细的信息

  -vs;这连个参数一起用

  -n;之处多线程或者分布式运行测试用例---pytest -vs test_login.py -n 2

  --reruns num:失败用例重跑

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

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

  -k;根据测试用例的部分字符串指定测试用例---如;pytest -vs ./testcase -k "ao"

  --html ./report/report.html;生成html的测试报告,到指定文件

3,通过读取pytest,ini配置文件运行

pytest.ini这个文件它是pytest单元测试框架的核心配置文件,

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

2 编码:必须是ANSI,可以是用notpad++修改编码格式。

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

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

[pytest]

addopts = -vs --html ./report/report.html #命令行的参数,用空格分隔

testpaths = ./testcase #测试用例的路径

python_files = test_*.py #模块名的规则

python_classes = Test* #类名的规则

python_functions = test #方法名的规则

markers =

  smoke:冒烟用例

  usermanage:用户管理模块

 

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

  unittest  是按照ascll的大小来决定的执行的顺序

  pytest默认从上到下

  改变默认的执行顺序:使用mark标记--@pytest.mark.run(order=3)

 

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

要在测试用例前面使用mark标记--@pytest.mark.somke

下面是ini文件中加配置

somke:

pytest -m "somke"

pytest -m "smoke or usermanage"

 

八,pytest跳过测试用例

1,无条件跳过

@pytest.mark.skip(reason="这里是跳过的理由")

2,有条件跳过

@pytest.mark.skip(age>=18,reason="这里是跳过的理由")



 

posted @ 2021-07-31 19:53  侑妳才完美  阅读(62)  评论(0)    收藏  举报