全国测试开发大赛
https://mp.weixin.qq.com/s/hi5Ke1W6fihVQscYc6bSMw
测试开发赛道:https://mp.weixin.qq.com/s/wyCY-pFyvHvi27vvnJ7YXQ
比赛报名地址:https://ccf.org.cn/cat2026
目前比赛报名时间截止到 5月27日
测试开发赛道官方选手通知QQ群:1102401108
考试范围
业务测试、算法、web 自动化测试和接口自动化测试相关的技能。
赛前技能准备
- 掌握一门编程语言:python/java
- 掌握对应语言的单元测试框架:pytest/JUnit
- 软件测试的基础理论
- web 自动化测试:selenium
- 接口自动化测试:python 推荐使用 requests,java 推荐使用 restassured
目录
- 学习路径
- 环境搭建
- 编写单元测试用例
- 实现参数化
- 测试用例运行与调度
学习路径

环境搭建
pip 安装
-
安装命令:
pip install -U pytest -
安装成功后,查看版本:
pytest --version
编写单元测试用例
Pytest 测试用例编写规范
- 测试文件以 test_ 开头(以 _test 结尾也可以)
- 测试类以 Test 开头,并且不能带有 init 方法
- 测试函数和方法以 test_ 开头
被测代码分析
- 加法计算器
- 被测方法需要传递的数据类型为:整型或者浮点型
- 数据区间为【-99,99】
- 浮点数允许小数点后两位
class Calculator:
def add(self, a, b):
if a > 99 or a < -99 or b > 99 or b < -99:
print("请输入范围为【-99, 99】的整数或浮点数")
return "参数大小超出范围"
return a + b
被测代码测试用例设计
- 等价类
- 边界值
- 错误推断
编写单元测试脚本
-
pytest:执行当前目录下所有的测试用例 -
pytest -v:查看详细日志信息 -
pytest -vs:控制台会打印 print 中的内容 -
pytest -vs test_add.py::TestAdd::test_add1:指定要执行的具体测试方法
pytest 框架结构
- 测试装置(test fixture)
- 测试用例(test case)
- 测试套件(test suite)
- 测试执行器(test runner)
pytest 框架结构
- 模块级(setup_module/teardown_module)模块始末,全局的(优先最高)
- 函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
- 类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
- 方法级(setup_method/teardown_methond)开始于方法始末(在类中)
介绍不同级别的作用域
- module 模块:python文件,也就是一个python文件之前执行一次,一个文件中的测试用例都运行完毕后再执行一次。
- function 函数:类外面的函数,每个测试函数的前后运行一次
- method 方法:类中的方法,每个测试方法的前后运行一次
- class 类:一个测试类的前后运行一次
类级别和方法级别演示
class TestDemo:
def setup_class(self):
print("类级别的setup")
def teardown_class(self):
print("类级别的teardown")
def setup_method(self):
print("方法级别的setup")
def teardown_method(self):
print("方法级别的teardown")
def test_demo1(self):
print("testdemo1")
def test_demo2(self):
print("testdemo2")
实现参数化
class TestAdd:
@pytest.mark.P0
@pytest.mark.parametrize("a, b, expect", [
[1, 1, 2],
[-0.01, 0.02, 0.01],
[10, 0.02, 10.02]
], ids=["int", "float", "int_float"])
def test_add_by_params(self, a, b, expect):
# 实际结果
result = self.cal.add(a, b)
# 预期结果
# expect = 2
# 断言
assert result == expect
总结
- pytest 环境搭建
- pytest 用例编写
- pytest 参数化
- pytest 用例执行
