ddt数据驱动

# coding:utf-8
import unittest
import ddt
from selenium import webdriver
from ke1test.pageobjectmodle.page_blog.loginpage import LoginPage
'''所谓的数据驱动就是能自动将list中的多条用例参数数据给拆分成多条用例的参数',并运行该多条用例'''

datas = [
{
'username': 'admin',
'psw': '@Test1234',
'result': 'admin'
},
{
'username': 'admin1',
'psw': '@Test1234',
'result': ''
}
]
@ddt.ddt
class TestLoginCase(unittest.TestCase):
# case1 = {
# 'username' : 'admin',
# 'psw' : '@Test1234',
# 'result' : 'admin'
# }
# case2 = {
# 'username' : 'admin1',
# 'psw' : '@Test1234',
# 'result' : ''
# }
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome()
cls.login_page = LoginPage(cls.driver)


def tearDown(self):
self.login_page.logout()

@classmethod
def tearDownClass(cls):
cls.driver.quit()

def login_case(self, case_dict):
self.login_page.login(case_dict['username'], case_dict['psw'])
result = self.login_page.get_login_result()
return result

@ddt.data(*datas)
def test_login_case(self, case_dict):
self.assertEqual(self.login_case(case_dict), case_dict['result'])

# def test_login_success(self):
# self.assertEqual(self.case1['result'], self.login_case(self.case1))
#
# def test_login_fail(self):
# self.assertEqual(self.case2['result'], self.login_case(self.case2))

if __name__ == '__main__':
unittest.main()

使用ddt之前多少条用例就需要写多少个参数,且需要写多个用例,使用ddt之后,可直接用一条用例
posted @   月燕如  阅读(411)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示