• python3 unittest数据驱动


    我们在自动化测试的时候,有没有遇到这样的问题?例如一个登录的接口要做自动化,会有很多case(用例),密码错误,密码正确这种。在继承unittest.TestCase的类中,凡是以“test”开头的方法都会被看作成一个case。那么基于这个机制,一个登录的接口,我们是不是要写很多以“test”开头的方法,testlogin1(),testlogin2(),testlogin3().很显然这种写完是不行的,代码不能复用,代码量大,且逻辑代码和数据没能区分出来不利于管理。那么我们需要用到数据驱动这个方法来加入到我们的自动化中。

    1.首先的安装“request”、“ddt”、“xlrd”、“unittest”模块。这几个模块我前面的博客有介绍的,可以看一下。

    2.然后我们分别用@ddt.ddt、@ddt.data、@ddt.unpack装饰我们得到类、数据、方法。

    3.@ddt.data()的数据就可以参数化了,可以从表格里面取。

    import unittest
    import ddt
    from Login import Login
    import HTMLTestRunner
    
    
    @ddt.ddt
    class PraddtTest(unittest.TestCase):
    
        def setUp(self):
            print("my test start!")
    
        def tearDown(self):
            print("my test complete!")
    
        @ddt.data(["admin", "1qaz", "OK"],
                  ["admin", "", "ERROR"],
                  ["", "1qaz", "ERROR"],
                  ["admin", "1234", "ERROR"],
                  ["Admin", "1qaz", "ERROR"])
        @ddt.unpack
        def test_ddt(self, user, passwd, expect_value):
            Login1=Login()
            result = Login1.login(user, passwd)
            print(result)
            self.assertEqual(result, expect_value, msg=result)
    
    
    if __name__=="__main__":
        with open('F:\temp.html', 'wb') as fp:
            stiue = unittest.TestLoader().loadTestsFromTestCase(PraddtTest)
            runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title="1", description="2")
            runner.run(stiue)
    

      

  • 相关阅读:
    最小堆
    HDU1022+栈
    POJ2318+几何+判点在四边形内
    HDU1003+最大连续子序列和+起始终止位置
    HDU1174+三维点到直线距离
    HDU4517
    Two Phase Commit (2PC) [转]
    分布式系统领域经典论文翻译集 [转]银河里的星星
    每个程序员都应该知道的8个LINUX命令 [转]
    Google File System解析 [转]
  • 原文地址:https://www.cnblogs.com/lystbc/p/8080761.html
Copyright © 2020-2023  润新知