项目名称:实验三
一、 实验目的
1、 掌握单元测试技术,并按单元测试的要求设计测试用例。
2、 掌握一种单元测试工具的使用。
二、 实验内容
自行学习C#或python或C++的其中一种单元测试工具的使用,自选一段单元代码(不少于15行),进行测试。完成实验报告。
三、 设计思路及结果
设计思路:这里我使用Python的pytest框架进行单元测试,学习并掌握Python的pytest框架进行单元测试的基本使用,通过编写单元测试用例来验证代码的正确性和健壮性。
实验工具:Python 3.10、pytest测试框架、PyCharm
代码段:
1. 首先是理论学习部分
(1) 什么是单元测试框架?
单元测试是指在软件开发当中针对软件的最小单位(函数、方法)进行正确性的检查测试。
(2) 单元测试框架有哪些?
常见的有:Java:junit 和 testing
python:unittest 和 pytest
这里我选择学习pytest.
(3) pytest单元测试框架和自动化测试框架的关系
单元测试框架:只是自动化测试框架中的组成部分之一
pom设计模式:只是自动化测试框架中的组成部分之一
数据驱动、关键字驱动、全局配置文件的封装、日志监控、selenium,requests二次封装、断言、报告邮件等等
(4) pytest简介
1).pytest是一个非常成熟的python的单元框架,比unittest更灵活,容易上手
2).pytest可以和selenium、requests、appium结合实现web自动化、接口自动化、app自动化
3).pytest可以实现测试用例的跳过以及reruns失败用例重试
4).pytest可以和allure生成非常美观的测试报告
5).pytest可以和Jenkins持续集成
6).pytest有很多非常强大的插件,并且这些插件能够实现很多的使用的操作
# 如:
pytest
pytest-html # (生成html格式的自动化测试报告)
pytest-xdist # (测试用例分布式执行,多CPU分发)
pytest-ordering # (用于改变测试用例的执行顺序)
pytest-rerunfailures # (用例失败后重跑)
allure-pytest # (用于生成美观的测试报告)
2. 实验学习部分
(1) 安装pytest并运行单元测试
在命令行中,首先安装pytest:pip install pytest
实验结果:
(2) 执行用例规则
1.某个目录下所有的用例 > pytest 文件名/
2.执行某一个 py 文件下用例
> pytest 脚本名称.py 3.-k
按关键字匹配 >
pytest -k "MyClass and not method"
(3) pycharm 运行三种方式
1.以 xx.py 脚本方式直接执行,当写的代码里面没用到 unittest 和 pytest 框架时,并且脚本名称丌是以 test_开头命名的,此时 pycharm 会以 xx.py 脚本方式运行
2.当脚本命名为 test_xx.py 时,用到 unittest 框架,此时运行代码, pycharm 会自动识别到以 unittest 方式运行
3.以 pytest 方式运行,需要改该工程设置默讣的运行器: file->Setting->Tools->Python Integrated Tools->顷目名称 ->Default test runner->选择 py.test
代码:
import pytest
class TestClass():
def test_one(self):
x='this'
assert 'h' in x
def test_two(self):
x='hello'
assert hasattr(x,'check')
if __name__ == '__main__':
pytest.main(['-v', 'test_01.py'])
测试结果:
(4) 基本测试用例
先进行一下基本测试用例
代码:
import math
def test_sqrt():
num = 25
assert math.sqrt(num) == 5
def testsquare():
num = 7
assert 7*7 == 40
def tesequality():
assert 10 == 11
使用以下命令运行测试
(5) 测试用例 setup 和 teardown
用例运行级别
模块级(setup_module/teardown_module)开始于模块始末, 全局的
函数级(setup_function/teardown_function)叧对函数用例生 效(不在类中)
类级(setup_class/teardown_class)叧在类中前后运行一次(在 类中)
方法级(setup_method/teardown_method)开始于方法始末 (在类中)
类里面的(setup/teardown)运行在调用方法的前后
函数式 setup_function/teardown_function
pytest 框架支持函数呾类两种用例方式,先看函数里面的前置不后 置用法: setup_function/teardown_function 每个用例开始和结束调用一次。
代码:
def setup_function():
print('setup_function: 每个用例开始都执行')
def teardown_function():
print('teardown_function: 每个用例结束后都会执行')
def test_one():
print('正在执行--test_one')
x='this'
assert 'h' in x
def test_two(self):
print('正在执行--test_two')
x='hello'
assert hasattr(x,'check')
def test_three():
print('正在执行--test_three')
a='hello'
b='hello word'
assert a in b
if __name__ == '__main__':
pytest.main(['-s','test_01.py'])
执行的结果:
setup_module 是所有用例开始前叧执行一次,teardown_module 是 所有用例结束后叧执行一次
从运行结果可以看到 setup_module 呾 teardown_module 叧执行了一次
四、个人体会
通过本次实验,我学习了如何使用Python的pytest框架进行单元测试。pytest 提供了丰富的功能来简化 Python 测试工作。通过合理利用 fixtures、参数化测试、标记和插件系统,你可以构建强大而灵活的测试套件。良好的测试实践不仅能提高代码质量,还能加速开发流程,让你在重构时更有信心。测试不是负担,而是提高开发效率的工具。

浙公网安备 33010602011771号