DDT介绍:

DDT(数据驱动测试)允许您通过使用不同的测试数据运行一个测试用例来使其倍增,并使它显示为多个测试用例。要使用DDT需要安装,安装命令:pip install ddt

使用方法:

dd.ddt:
装饰类,也就是继承自TestCase的类。
ddt.data:
装饰测试方法。参数是一系列的值。
ddt.file_data:
装饰测试方法。参数是文件名。文件可以是json 或者 yaml类型。
注意,如果文件以”.yml”或者”.yaml”结尾,ddt会作为yaml类型处理,其他所有文件都会作为json文件处理。
如果文件中是列表,每个列表的值会作为测试用例参数,同时作为测试用例方法名后缀显示。
如果文件中是字典,字典的key会作为测试用例方法的后缀显示,字典的值会作为测试用例参数。
ddt.unpack:
传递的是复杂的数据结构时使用。比如使用元组或者列表,添加unpack之后,ddt会自动把元组或者列表对应到多个参数上。字典也可以这样处理。参见下面的示例2.
测试用例方法名生成规则
使用ddt后,会产生一个新的测试用例方法名:之前的测试用例方法名_ordinal_data
之前的测试用例方法名:即定义的测试用例方法名。比如def test_large(),这里就是test_large
ordinal:整数,从1开始递加。
data:如果传递过来的数据存在__name__属性,则这里就是该数据的__name__值。如果未定义__name__属性,ddt会尽量将传递过来的数据转化为python标识符,作为data显示。比如 (3,2)就转化为3_2。需要注意的是,如果数据是字典,则这里就是字典的key。

示例:

以登陆新浪邮箱为例,分别测试用户名为空,密码为空,全部为空的三种情况,代码如下:

class SinaTestCase(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.get("https://mail.sina.com.cn/")
self.driver.implicitly_wait(30)
@ddt.data(*casedata)
@unpack
def test_username_passwd(self,username,password,expectresult):
'''验证:新浪登陆为空'''
self.driver.find_element_by_id("freename").send_keys(username)
self.driver.find_element_by_id("freepassword").send_keys(password)
self.driver.find_element_by_link_text("登录").click()
isText = WebDriverWait(driver=self.driver, timeout=10).until(expected_conditions.text_to_be_present_in_element(
(By.XPATH, "/html/body/div[1]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]"), "请输入邮箱名"))
self.assertEqual(isText, expectresult) def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
unittest.main(verbosity=2)

最新文章

  1. SqlServer-- NULL空值处理
  2. ZeroMQ接口函数之 :zmq_msg_move - 将一个消息里面的内容移动到另一个消息里面
  3. 使用CSS3动画库animate.css
  4. Jmeter :多个jmeter如何参数化获取不同的CSV文件
  5. Kafka实战系列--Kafka API使用体验
  6. for...else循环
  7. ZooKeeper笔记--集群安装配置 【转】
  8. 安装uBuntu操作系统 - 初学者系列 - 学习者系列文章
  9. Go学习笔记01-语言
  10. C语言第十次作业
  11. MySQL_写锁_lock tables tableName write
  12. [Swift]LeetCode502. IPO(首次公开募股) | Initial Public Offerings
  13. USING KERBEROS
  14. python json数据的转换
  15. Java 实现视频下载功能
  16. Webpack学习-工作原理(上)
  17. spring boot -junit单元测试方法示例
  18. MySQL中adddate学习
  19. vs2010下sort比较函数链接错误问题
  20. NGINX+TOMCAT实现反向代理

热门文章

  1. Python中BaseException和Exception的区别
  2. 安全 - CORS(脚本请求等)
  3. LOJ#508. 「LibreOJ NOI Round #1」失控的未来交通工具
  4. JN_0009:win下快捷键注销,关机,重启
  5. linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(三)
  6. javascript初学笔记
  7. (ubuntu系统)安装opencv-python后,报错libSM.so.6: cannot open shared object file: No such file or directory
  8. webpack 代理问题
  9. chrome查看js报错Uncaught SyntaxError: Unexpected string
  10. 野路子码农(5)Python中的装饰器,可能是最通俗的解说