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

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

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

[email protected]()的数据就可以参数化了,可以从表格里面取。

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)

  

05-20 08:30