po3a  

项目名称:实验      

一、 实验目的

1、 掌握单元测试技术,并按单元测试的要求设计测试用例。 

2、 掌握一种单元测试工具的使用。

 

二、 实验内容

 

自行学习C#pythonC++的其中一种单元测试工具的使用,自选一段单元代码(不少于15行),进行测试。完成实验报告。

 

三、 设计思路及结果

设计思路:这里我使用Pythonpytest框架进行单元测试学习并掌握Pythonpytest框架进行单元测试的基本使用,通过编写单元测试用例来验证代码的正确性和健壮性。

实验工具:Python 3.10pytest测试框架、PyCharm

代码段

1. 首先是理论学习部分

(1) 什么是单元测试框架?

单元测试是指在软件开发当中针对软件的最小单位(函数、方法)进行正确性的检查测试

(2) 单元测试框架有哪些?

常见的有:Javajunit testing

pythonunittest pytest

这里我选择学习pytest.

(3) pytest单元测试框架和自动化测试框架的关系

单元测试框架:只是自动化测试框架中的组成部分之一

pom设计模式:只是自动化测试框架中的组成部分之一

数据驱动、关键字驱动、全局配置文件的封装、日志监控、seleniumrequests二次封装、断言、报告邮件等等

(4) pytest简介

1).pytest是一个非常成熟的python的单元框架,比unittest更灵活,容易上手

2).pytest可以和seleniumrequestsappium结合实现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并运行单元测试

在命令行中,首先安装pytestpip 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 叧执行了一次

 

个人体会

通过本次实验,我学习了如何使用Pythonpytest框架进行单元测试。pytest 提供了丰富的功能来简化 Python 测试工作。通过合理利用 fixtures、参数化测试、标记和插件系统,你可以构建强大而灵活的测试套件。良好的测试实践不仅能提高代码质量,还能加速开发流程,让你在重构时更有信心。测试不是负担,而是提高开发效率的工具。

 

posted on 2025-04-29 09:24  po3a  阅读(10)  评论(0)    收藏  举报