Pytest测试框架知识

1、pytest介绍

pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:

1.简单灵活,容易上手

2.支持参数化

3.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)

4.pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等

5.测试用例的skip和xfail处理

6.可以很好的和jenkins集成

7.report框架----allure 也支持了pytest

2、pytest安装

使用命令

pip install -U pytest

查看是否安装成功及安装的版本信息

pytest --version # 会展示当前已安装版本

pytest官方文档:

官方文档:https://docs.pytest.org/en/latest/contents.html

注意pytest有如下约束:

  • 所有的单测文件名都需要满足test_.py格式或_test.py格式。
  • 在单测文件中,测试类以Test开头,并且不能带有 init 方法(注意:定义class时,需要以T开头,不然pytest是不会去运行该class的)
  • 在单测类中,可以包含一个或多个test_开头的函数。
  • 在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。

3、Pytest命名规范:

1、测试模块文件(.py文件)命名应该以 test_开头或者以_test结尾。

2、测试类命名应当以Test开头。表示一个项目或者一个模块的用例集合

3、测试用例(函数)命名,测试函数的方法命名应该以test_开头。

注意:测试类的不应该有构造函数,也就是不能有__init__出现

案例新建一个python文件,命名为:test_example1:

import pytest

class Test_Login:
    def test_login(self):
        print("测试登录")

    def test_logout(self):
        print("测试退出")

    def test_insert(self):
        print("测试插入")

class Test_Login2:
    def test_login(self):
        print("测试登录2")

    def test_logout(self):
        print("测试退出2")

    def test_insert(self):
        print("测试插入2")


if __name__ == '__main__':
    pytest.main(['-s','test_exmaple.py'])  # 调用pytest的main函数执行测试

执行后,可以看到,运行了test_example1文件下Test_Login测试类和Test_Login2测试类中的三个测试用例

4、pytest用例的运行方式

1、主函数模式

  • 运行所有:pytest.main()

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

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

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

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

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

2、命令行模式

  • 运行所有:pytest

  • 指定模块:pytest -vs test_login.py

  • 指定目录:pytes -vs ./interface_testcase

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

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

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

参数详解:

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

-v: 显示更详细的信息

-vs:两个参数一起用

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

如:pytest -vs ./testcase/test_login.py -n 2

-return NUM:失败用例重跑,num失败后重跑的次数

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

--maxfall=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、运行规则:不管是主函数的模式运行,命令模式运行,都会去读取这个配置文件

5、pytest执行用例的顺序:

unittes框架 :是根据ASCII的大小来决定执行的顺序

pytest框架:默认从上到下

如果要改变默认的执行顺序,使用mark标记
@pytest.mark.run(order=2)

你可能感兴趣的:(Pytest测试框架知识)