Pytest教程__测试用例的执行方式(2)

在pytest框架中,编写测试用例有如下约束:

  • 所有的测试用例文件名都需要满足test_*.py格式或*_test.py格式。
  • 在测试用例文件中,测试类以Test开头,并且不能带有__init__方法,否则pytest不会执行该class。
  • 在测用例的class中,可以包含一个或多个test_开头的方法。

在满足上面约束后,有两种方式来执行测试用例:

  1. 主函数方式
  2. 命令行方式

主函数方式

执行所有用例

使用pytest.main()方式执行用例,如果不加参数,会自动从当前目录及子目录中寻找符合上述约束的测试用例来执行。

import pytest

class TestPractice:

    def test_01(self):
        print("执行用例1")

    def test_02(self):
        print("执行用例2")

if __name__ == '__main__':
    pytest.main()

执行结果

Pytest教程__测试用例的执行方式(2)_第1张图片

从上面的结果中,可以看到,print()打印的信息未显示,可以使用-s参数显示打印信息

...(省略)

if __name__ == '__main__':
    pytest.main(["-s"])

注意参数格式是列表

Pytest教程__测试用例的执行方式(2)_第2张图片

上面的pytest.main()是写在用例文件中的,我们可以将其独立出来,结构如下

Pytest教程__测试用例的执行方式(2)_第3张图片

执行指定用例集

每个测试用例都有一个唯一的nodeid,节点ID格式为  “相对于执行文件的用例文件路径::类名::用例名”。可以使用-v参数,查看执行的详细信息,详细信息包含了用例的节点ID。

Pytest教程__测试用例的执行方式(2)_第4张图片

在知道了用例的节点ID后,只需要将用例的节点ID以参数的形式传入,就可以执行指定用例了。

执行指定用例

Pytest教程__测试用例的执行方式(2)_第5张图片

执行指定用例类

Pytest教程__测试用例的执行方式(2)_第6张图片

执行指定用例文件或指定路径

Pytest教程__测试用例的执行方式(2)_第7张图片

命令行方式

命令行方式与主函数相差不大,区别是主函数是以列表添加参数,命令行是以空格添加参数。

Pytest教程__测试用例的执行方式(2)_第8张图片

Pytest教程__测试用例的执行方式(2)_第9张图片

配置文件修改约束条件

文章开头强调了测试用例的约束条件,这些约束条件是可以通过pytest.ini来修改的,下面是常用的配置字段:

[pytest]
# 命令行参数,用空格分隔
addopts = -v -s

# 读取测试用例的起始文件夹
testpaths = ./testcase

# 配置搜索的模块文件名称
python_files = test*.py

# 配置搜索的测试类名
python_classes = Test

# 配置搜索的测试方法名
python_functions = test

复制上面信息,在项目根目录创建pytest.ini,将复制的信息粘贴进去,然后执行用例。

注意:此时会报错:UnicodeDecodeError: 'gbk' codec can't decode

原因是我们在配置文件中使用了中文,解决方法有两种:

  • 删除文件中的中文
  • 修改iniconfig中的代码

点击倒数第二行的报错,在其前面一行代码的open()函数中增加 encoding='utf-8' 就能解决问题

Pytest教程__测试用例的执行方式(2)_第10张图片

解决报错问题后,就可以通过修改配置文件执行我们想要执行的用例了,比如,执行类名以A开头用例以b开头的用例

Pytest教程__测试用例的执行方式(2)_第11张图片


最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

在我的QQ技术交流群里(技术交流和资源共享,广告勿扰)

你可能感兴趣的:(软件测试,pytest,单元测试,pytest,软件测试,自动化测试,自动化测试框架)