Python + unittest + DDT 实现数据驱动测试
数据驱动测试是一种测试方法,通过使用不同的数据集来执行相同的操作,从而验证应用程序的行为是否正确。在Python中,我们可以使用unittest和DDT库来快速实现数据驱动测试。
步骤
下面是使用Python+unittest+DDT实现数据驱动测试的步骤:
- 将测试数据存储在一个文件中,例如CSV文件。
- 编写测试用例的类,继承unittest.TestCase,并在setUp方法中初始化被测试的对象。
- 编写测试用例方法,使用DDT库来加载测试数据。
- 使用unittest的assert方法来比较实际结果和期望结果。
安装
首先,我们需要安装unittest和DDT库。可以使用pip安装。
pip install unittest ddt
示例
以下是两个使用Python+unittest+DDT实现数据驱动测试的示例。
示例1:计算器加法操作测试
代码:
import csv
import unittest
from ddt import ddt, data, unpack
def read_csv(file_path):
test_data=[]
with open(file_path,mode='r',encoding='utf-8-sig') as fp:
data_from_csv=csv.reader(fp)
for data in data_from_csv:
test_data.append(data)
return test_data
@ddt
class TestCalc(unittest.TestCase):
def setUp(self):
self.calc = Calculator()
@data(*read_csv("testdata.csv"))
@unpack
def test_add(self, a, b, expected):
self.assertEqual(self.calc.add(int(a), int(b)), int(expected))
if __name__ == '__main__':
unittest.main()
测试数据文件testdata.csv:
1,3,4
-1,-3,-4
1.1,2.2,3.3
输出:
$ python test_calc.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
示例2:登录测试
代码:
import csv
import unittest
from ddt import ddt, file_data
from selenium import webdriver
def read_csv(file_path):
test_data=[]
with open(file_path,mode='r',encoding='utf-8-sig') as fp:
data_from_csv=csv.reader(fp)
for data in data_from_csv:
test_data.append(data)
return test_data
@ddt
class TestLogin(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
@file_data("testdata.json")
def test_login(self, username, password):
self.driver.get("https://www.example.com/login")
self.driver.find_element_by_name("username").send_keys(username)
self.driver.find_element_by_name("password").send_keys(password)
self.driver.find_element_by_name("submit").click()
# Assert that login was successful
self.assertTrue("Welcome" in self.driver.title)
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
unittest.main()
测试数据文件testdata.json:
{
"test1": [
"user1",
"password1"
],
"test2": [
"user2",
"password2"
],
"test3": [
"user3",
"password3"
]
}
输出:
$ python test_login.py
...
----------------------------------------------------------------------
Ran 3 tests in 0.000s
OK
在以上两个示例中,DDT库帮助我们从CSV文件和JSON文件中读取测试数据,并使用单元测试框架来运行测试用例。使用DDT,我们可以很容易地通过更改测试数据来增加测试用例的覆盖范围。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python+unittest+DDT实现数据驱动测试 - Python技术站