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)

  

原文地址:https://www.cnblogs.com/lystbc/p/8080761.html