Pytest 如何编写用例 您所在的位置:网站首页 初始化功能测试用例怎么写的好 Pytest 如何编写用例

Pytest 如何编写用例

2024-07-11 23:46| 来源: 网络整理| 查看: 265

Pytest 中不仅支持类写用例,也支持用函数写用例,下面我们来看一下如何编写。

在写用例之前,我们先了解一下 Pytest 的查找规则,这样我们才知道什么样的用例才是 Pytest 允许的:

Pytest 默认会从配置的目录(pytest 的专用配置文件中进行过配置,后面讲)或者从当前目录(未配置的情况下)开始递归查找。如果使用命令行运行方式,那么会从命令运行的当前文件夹开始查找; 如果有配置 norecursedirs (同样在配置文件中配置的忽略目录),那么会忽略这部分目录;查找符合条件的目录下的所有 test_*.py 和 *_test.py ,默认情况下你必须按此要求去命名你的文件。当然这并不是不能改的,通过 pytest 专用的配置文件可以更改测试的命名规则;接下来,从这些文件中查找符合条件的测试项目(用例): 以 test 开头的函数(可以不用带下划线,但是按照 python 的明明规范,带上下划线test_更符合 python 代码的审美);以 Test 开头的测试类(类中不能定义__init__方法)中的以test开头的测试方法。

注意:

查找的根目录最好没有 __init__.py,而子目录最好加上__init__.py,这不会影响查找,但是可能会影响最后测试的加载;注意测试类中必须没有__init__初始化方法;测试文件名中不要有.,比如不能这样写test_foo.bar.py。

好,简单了解一下pytest 的查找目录,那么也就是说我们在写测试时可以写为测试函数和测试类。

那什么情况下用类,什么情况下用函数呢?

个人喜好,这不是开玩笑,本来就没有必须要求;你需要引入更多面向对象的写法,比如继承,那么就写为类;如果你需要把一些相关的用例集合在一起,那么就用类。

测试类提供更多的抽象功能,这是面向对象本身就具备的。但这并不是必须的,一切取决于你的项目情况。你可以先写测试函数,如果遇到需要大量抽象的时候,就用测试类。

本身 Pytest 只是查找符合其规则的测试用例,并执行测试用例中的代码,然后记录运行的情况罢了。至于测试代码你怎么写,Pytest 也是管不了的。就像你在测试用例中只写一个 print('hello pytest'),这句代码从我们测试的角度来看没有任何意义,但是你只要命令上符合用例规则,Pytest 就认为这是一个用例,并忠实的去执行它。

测试函数的写法,我们上一节已经介绍过了,那么写一个类只要符合命名规则和 Python 语法即可:

import pytest def add(a, b): return a + b def teststr(): """测试字符串""" a, b = '1', '2' assert add(a, b) == '112' def test_int(): """测试整型""" a, b = 1, 2 assert add(a, b) == 3 class TestSequence: def test_list(self): assert add([1], [2]) == [1, 2] def test_tuple(self): assert add((1,), (2,)) == (1, 2) if __name__ == '__main__': pytest.main()

只是这些类里面不能再有测试固件 setUp和tearDown 了,在 Pytest 有专用的测试固件的写法。

当然,如果你按照 Unittest 的写法去写 测试用例,Pytest 一样可以按照 Unittest 的标准运行。试试吧!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有