本文节选自霍格沃兹测试学院内部教材
Testlink 是基于 WEB 的测试用例管理系统,主要功能是:测试项目管理、产品需求管理、测试用例管理、测试计划管理、测试用例的创建、管理和执行,并且还提供了统计功能。
pytest 是一个成熟的全功能Python测试工具,可以帮助您编写更好的程序。它与 python 自带的 unittest 测试框架类似,但 pytest 使用起来更简洁和高效,并且兼容 unittest 框架。
pytest 能够支持简单的单元测试和复杂的功能测试,pytest 本身支持单元测试,可以结合 requests 实现接口测试,结合selenium、appium 实现自动化功能测试,使用 pytest 结合 allure 集成到 Jenkins 中可以实现持续集成。
工作中一般会使用持续集成来完成代码集成到主干分支之后的回归测试,通过自动化测试的手段来实现产品的快速迭代,同时还能保证产品的高质量。
pip install -U pytest
查看版本
pytest --version
用例编写规范
- 测试文件以test_开头(以_test结尾也可以)
-
- 测试类以Test开头,并且不能带有 init 方法
-
- 测试函数以test_开头
-
- 断言使用基本的assert即可
创建一个python文件,命名以test_开头(或者以_test结尾),创建测试方法以test_开头,测试类需要以Test开头。创建文件名为test_add.py文件,代码如下:
- 断言使用基本的assert即可
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def add(x, y):
return x + y
def test_add():
assert add(1, 10) == 11
assert add(1, 1) == 2
assert add(1, 99) == 100
class TestClass:
def test_one(self):
x = "this"
assert "h" in x
def test_two(self):
x = "hello"
assert hasattr(x, "check")
运行 “test_add.py” 文件,在命令行进入到这个文件所在的路径,可以直接使用 pytest 命令运行,pytest 会找当前目录以及查找子目录下所有的test_.py或_test.py的文件,把其当作测试文件。在这些文件里,pytest 会收集符合编写规范的函数,类以及方法,当作测试用例并且执行,执行如下:
$ pytest
....
test_add.py ..F [100%]
....
self = <test_cases.test_add.TestClass object at 0x1091810d0>
def test_two(self):
x = "hello"
> assert hasattr(x, "check")
E AssertionError: assert False
E + where False = hasattr('hello', 'check')
test_add.py:18: AssertionError
=================================================== 1 failed, 2 passed in 0.05s
结果分析:执行结果中,F代表用例未通过(断言错误),.代表用例通过。如果有报错会有详细的错误信息。pytest也支持unittest模式的用例定义。
pytest 带有很多参数,可以使用pytest --help来查看帮助文档,下面介绍几种常用的参数:
• 无参数
读取路径下所有符合规则的文件,类,方法,函数全部执行。使用方法如下:
pytest 或者 py.test
• -v 参数
打印详细运行日志信息,一般在调试的时候加上这个参数,终端会打印出每条用例的详细日志信息,方便定位问题。使用方法如下:
pytest -v
• -s 参数
带控制台输出结果,当你的代码里面有print输出语句,如果想在运行结果中打印print输出的代码,在运行的时候可以添加-s参数,一般在调试的时候使用,使用方法如下:
pytest -s
• -k 参数
跳过运行某个或者某些用例。应用场景:在测试场景中,开发人员有一部分功能代码还没实现,测试人员已经将测试用例设计出来,或者测试人员发现了某功能上的 bug 需要开发人员修复之后再测试这部分有缺陷的测试用例,可以将这部分测试用例在运行的时候暂时跳过,等功能实现或者 bug 解决之后再加入运行。使用方法如下:
<