unittest认识及工作原理

unittest是Python内置的单元测试框架,包括test case、test suite、testLoader、test runner和test fixture五大概念。test case是测试单元,执行前后的环境准备和还原;test suite是多个测试用例集合;testLoader负责加载测试用例;test runner执行测试并记录结果;test fixture处理测试环境的初始化和还原。unittest的工作流程是:编写TestCase,通过TestLoader加载到TestSuite,由TextTestRunner运行,结果存储在TextTestResult中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.unittest认识
unittest是python内置的单元测试框架,具备编写用例、组织用例、执行用例、输出报告等自动化框架的条件。
使用unittest前需要了解该框架的五个概念: 即test case,test suite,testLoader,test runner,test fixture。

test case :一个完整的测试单元,执行该测试单元可以完成对某一个问题的验证,完整体现在:
测试前环境准备(setUp),执行测试代码(run),以及测试后环境还原(tearDown);
test suite :多个测试用例的集合,测试套件或测试计划;
testLoader :加载TestCase到TestSuite中的,其中loadTestsFrom__()方法用于寻找TestCase,并创建它们的实例,然后添加到TestSuite中,返回TestSuite实例;
test runner :执行测试用例,并将测试结果保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息;
test fixture:一个测试用例的初始化准备及环境还原,主要是setUp() 和 setDown()方法;

2.unitest的工作原理

通过unittest类调用分析,可将框架的工作流程概况如下:
编写TestCase,由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite, 最后将运行的结果保存在TextTestResult中。


#coding:utf8
from selenium import webdriver  # webdriver属于selenium的API
import unittest  # unittest是python自带的模块
import time
class test_mail_login(unittest.TestCase):  # 定义一个类并集成 unittest 基类中的 TestCase 类
    def setUp(self):   # 每个测试case运行之前运行(前置条件)
        self.driver = webdriver.Chrome()  # 驱动谷歌浏览器
        self.driver.get("https://www.baidu.com")  # 获取百度URL
        self.driver.set_window_size(800, 1000)  # 窗口大小设置
        # self.driver.maximize_window()  # 窗口最大化
        time.sleep(2)
        self.driver.find_element_by_id("kw").send_keys("网易")  # 百度输入框定位并键入关键字
        time.sleep(3)
        self.driver.find_element_by_id("su").click()  # 点击搜索按钮
        self.driver.implicitly_wait(5)  # 页面静置5秒,无任何动作
    def test_mail_loginsuc(self):  # 设计测试用例(case)重点注意,方法名必须以【test_】开头
        self.driver.find_element_by_id("op_email3_username").send_keys("testerhunter")
        time.sleep(2)
        self.driver.find_element_by_class_name("op_email3_password").send_keys("123456hunter")
        time.sleep(2)
        self.driver.find_element_by_class_name("c-btn").click()
        self.handles = self.driver.window_handles  # 获取所有句柄
        self.driver.switch_to_window(self.handles[-1])  # 句柄转换,获得当前句柄
        time.sleep(3)
        txt = self.driver.find_element_by_id("spnUid").text  # 获取页面固定内容的文本
        print(txt)
        self.assertEqual(txt, "testerhunter@163.com")  # 做断言处理,判断实际结果与期望结果是否一致
    def tearDown(self):  # 每个测试case运行完之后执行(后置条件)
        self.driver.delete_all_cookies()  # 清空所有cookies值,让页面更清洁,反应更快,避免造成缓存问题
        self.driver.quit()  # 关闭浏览器
 
if __name__ == '__main__':
    unittest.main()  # 这种执行方式,用例的执行顺序是无序的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值