0
点赞
收藏
分享

微信扫一扫

UnitTest 工作流中核心的四大组件简介

一葉_code 2022-04-13 阅读 52
python

单元测试库(UnitTest)实现了我们在开发代码过程中实际值和预期值进行比较等功能,使用起来很方便。UnitTest作为一种单元测试框架,其思想来源于JUnit,跟目前市场上主流的一些测试框架有很多相似之处。

UnitTest 工作流中核心的四大组件简介:
(1)Test Fixture 是指在执行测试之前的准备工作,比如数据清理工作、创建临时数据库、目录,以及开启某些服务进程等。
(2)Test Case 是最小的测试单元,具有独立性。主要检测输出结果是否满足期望,这些结果基于一系列特定的输入。UnitTest 提供了一个基类‘TestCase’用来创建新的 TestCases。
(3)Test Suite 可以简单理解为Test Case的集合,主要用于对于集成管理要在一起执行的测试用例。
(4)Test Runner 也是UnitTest的一个重要组件,主要用于协调测试的执行并提供结果输出给用户参考。

UnitTest 提供了很丰富的工具集来创建和运行单元测试。
(1)所有的测试用例类要继承基本类 unittest.TestCase。Python语法规定,父类要写在小括号内,如:Add(unittest.TestCase)。
(2)unittest.main() 的作用是使一个单元测试模块变为可直接运行的测试脚本。
main()方法使用TestLoader类来搜索所有包含在该模块中以‘test’命名开头的测试方法,并自动执行他们。执行方法的默认顺序是,根据ASCII码的顺序加载测试用例,数字与字母的顺序为0-9,A-Z,a-z。因此A开头的方法会优先执行,a开头的方法会后执行。

简单的单元测试练习代码:

# coding = utf-8

import unittest


class Add(unittest.TestCase):
    def setUp(self) -> None:
        pass

    def test_01(self):
        '''
        判断2与2是否相等,预期结果为相等
        :return:
        '''
        self.assertEqual(2, 2)

    def test_02(self):
        '''
        判断'selenium'与'appium'是否相等,预期结果为不相等
        :return:
        '''
        self.assertEqual('selenium', 'appium')

    def test_03(self):
        '''
        判断'se'与'se'是否是同样的字符串,预期结果是相同的
        :return:
        '''
        self.assertEqual('se', 'se')

    def tearDown(self) -> None:
        pass


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

用UnitTest运行一个webdriver的测试用例,业务场景是:百度首页->输入python并搜索->检查返回页面中是否有python字符串。
代码如下:

# coding = utf-8

import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
import time


class BaiDu(unittest.TestCase):
    def setUp(self) -> None:
        self.driver = webdriver.Chrome()

    def testBaidu(self):
        self.driver.get('https://www.baidu.com/')
        self.driver.find_element(By.ID, 'kw').clear()
        self.driver.find_element(By.ID, 'kw').send_keys('python')
        self.driver.find_element(By.ID, 'su').click()
        time.sleep(5)
        print(self.driver.page_source)
        assert 'python' in self.driver.page_source

    def tearDown(self) -> None:
        self.driver.quit()


if __name__ == '__main__':
    unittest.main()
举报

相关推荐

0 条评论