博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unittest详解(一) unittest初识
阅读量:6895 次
发布时间:2019-06-27

本文共 3652 字,大约阅读时间需要 12 分钟。

unittest是python内置的一个单元测试框架,在学习怎么使用它之前,我们先来了解它的一些概念和原理。

  • Test Case:测试用例,一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。单元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。
  • Test Suite:测试套件,就是多个测试用例集合在一起
  • Test Runner:测试执行,用来执行测试用例,其中的run(test)会执行TestSuite/TestCase
  • Test Fixture:对一个测试用例环境的搭建和销毁,是一个fixture,通过覆盖TestCase的setUp()和tearDown()方法来实现。这个有什么用呢?比如说在这个测试用例中需要访问数据库,那么可以在setUp()中建立数据库连接以及进行一些初始化,在tearDown()中清除在数据库中产生的数据,然后关闭连接。注意tearDown的过程很重要,要为以后的TestCase留下一个干净的环境。

了解了概念后,我们来看一个登陆的测试脚本。

代码:

# coding = utf-8import unittestimport warningsfrom selenium import webdriverfrom time import sleep# 驱动文件路径driverfile_path = r'D:\coship\Test_Framework\drivers\IEDriverServer.exe'class CmsLoginTest(unittest.TestCase):    def setUp(self):        # 这行代码的作用是忽略一些告警打印        warnings.simplefilter("ignore", ResourceWarning)        print("test start!")        self.driver = webdriver.Ie(executable_path=driverfile_path)        self.driver.get("http://172.21.13.83:28080/")    def tearDown(self):        self.driver.quit()        print("test end!")    def test_login1(self):        '''用户名、密码为空'''        self.driver.find_element_by_css_selector("#imageField").click()        error_message1 = self.driver.find_element_by_css_selector("[for='loginName']").text        error_message2 = self.driver.find_element_by_css_selector("[for='textfield']").text        self.assertEqual(error_message1, '用户名不能为空')        self.assertEqual(error_message2, '密码不能为空')        print("用例test_login1执行结束")    def test_login3(self):        '''用户名、密码正确'''        self.driver.find_element_by_css_selector("[name='admin.loginName']").send_keys("autotest")        self.driver.find_element_by_css_selector("[name='admin.password']").send_keys("111111")        self.driver.find_element_by_css_selector("#imageField").click()        sleep(1)        self.driver.switch_to.frame("topFrame")        username = self.driver.find_element_by_css_selector("#nav_top>ul>li>a").text        self.assertEqual(username,"autotest")        print("用例test_login3执行结束")    def test_login2(self):        '''用户名正确,密码错误'''        self.driver.find_element_by_css_selector("[name='admin.loginName']").send_keys("autotest")        self.driver.find_element_by_css_selector("[name='admin.password']").send_keys("123456")        self.driver.find_element_by_css_selector("#imageField").click()        error_message = self.driver.find_element_by_css_selector(".errorMessage").text        self.assertEqual(error_message, '密码错误,请重新输入!')        print("用例test_login2执行结束")    def login4(self):        '''用户名不存在'''        self.driver.find_element_by_css_selector("[name='admin.loginName']").send_keys("test007")        self.driver.find_element_by_css_selector("[name='admin.password']").send_keys("123456")        self.driver.find_element_by_css_selector("#imageField").click()        error_message = self.driver.find_element_by_css_selector(".errorMessage").text        self.assertEqual(error_message, '用户不存在!')        print("用例login4执行结束")if __name__ == "__main__":    unittest.main()

执行结果:

"C:\Program Files\Python36\python.exe" D:/Git/Test_Framework/utils/1.pytest start!用例test_login1执行结束.test end!test start!用例test_login2执行结束.test end!test start!用例test_login3执行结束test end!.----------------------------------------------------------------------Ran 3 tests in 34.044sOKProcess finished with exit code 0

从脚本和运行结果我们可以得到以下结论:

  • 要使用unittest这个测试框架时,需要先导入unittest
  • 定义一个测试类时,要继承unittest.TestCase这个类
  • setUp()是测试用例执行前的环境准备,tearDown()是测试用例执行结束后的环境恢复,每个测试用例都会执行一次setUp()和tearDown()
  • 测试用例必须以test开头,否则不会被执行。
  • 测试用例执行顺序是根据用例名称顺序来执行的

 

转载于:https://www.cnblogs.com/eastonliu/p/9141457.html

你可能感兴趣的文章
《中国大数据企业评级白皮书》出炉
查看>>
联想否认锁住设备以及阻止用户安装Linux
查看>>
“任意云”再创佳绩 戴尔赢得CEIA最佳混合云方案提供商
查看>>
Facebook正式上线视频直播:APP充当电视直播间
查看>>
深圳将实现窄带物联网商用全覆盖 深入19大行业应用
查看>>
大数据也是一把双刃剑
查看>>
抢物联网商机 中国三大电信商掀战火
查看>>
应用领域寸土寸金 大数据成为新一代“网红”?
查看>>
IBM:罗睿兰反对特朗普退出气候协定 但会留在顾问团队
查看>>
黑客组织Anonymous希望McAfee担任特朗普的安全顾问
查看>>
提升API使用效率的五种好习惯
查看>>
网络电话走俏 手机用户多看中“音质”
查看>>
AT&T推出全国性LTE-M网络
查看>>
国产自主CPU/操作系统真正实力是这样!
查看>>
中国光伏企业反对美国设卡
查看>>
加快云计算与托管数据中心的整合
查看>>
中国大数据发展报告发布 贵州获多项全国第一
查看>>
创新云计算商业模式新生态带来新活力
查看>>
数据为本,洞悉安全
查看>>
云时代,数据中心需要怎样的互联方案?
查看>>