zoukankan      html  css  js  c++  java
  • (一)基本使用

    原文链接:https://www.cnblogs.com/eastonliu/p/9141457.html

    初识

    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-8
    import unittest
    import warnings
    from selenium import webdriver
    from time import sleep
    # 驱动文件路径
    driverfile_path = r'D:coshipTest_FrameworkdriversIEDriverServer.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() 

    总结

    1)测试文件必须先import unittest

    2)测试类必须继承unittest.TestCase

    3)测试方法必须以“test_”开头

    4)测试类必须要有unittest.main()方法

    5)没有用例失败重跑功能

      

  • 相关阅读:
    [React] Improve developer experience for accessing context with a custom React hook
    [CSS] Create a self-centering, full-width stripe with CSS Grid
    android之使用mvn构建创造项目步骤
    Android读取Excel文件
    Android之RAS加密算法测试
    android 内存溢出oom错误的一些小见解
    Android之在应用程序内部关注某人的微信
    Android之使用picker打开相应的app
    MAC之查看日历
    MAC之tar解压与压缩打包命令
  • 原文地址:https://www.cnblogs.com/lvchengda/p/13176446.html
Copyright © 2011-2022 走看看