Selenium + Python 自动化测试18(数据驱动实现测试)

发布于:2024-08-23 ⋅ 阅读:(35) ⋅ 点赞:(0)

        我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。

上一篇我们讨论了数据驱动测试中如何读取Excel文件,今天我们试着进一步深入学习数据驱动。

         本篇文章我们讨论一下如何使用数据驱动思想实现测试。

1、数据驱动框架基础知识

DDT:data-driven tests 的缩写形式。unittest 没有自带数据驱动功能,可以使用DDT来实现。

使用方法说明:

1)ddt.data :装饰测试方法,参数是一些列的值,比如元组等。

2)ddt.file_data: 装饰测试方法,参数是文件名,测试数据保存在参数文件中。

3)ddt.unpack:当ddt 传递复杂的数据结构时使用

举个简单的例子说明:

先感受一下ddt的执行效果

#coding = utf-8

import unittest

import ddt



@ddt.ddt

class Test_exp(unittest.TestCase):

    def setUp(self):

        pass


    @ddt.data(1,2,3)

    def test_1(self,turns):

        print(turns)


    def tearDown(self):

        pass

if __name__ == '__main__':

    unittest.main()

开始执行说找不到ddt,报错如下:

安装一下看看:

pip install ddt

再次执行成功了,如下如明显看出执行了3次,每个参数一次。

2、简单实例如登录

1)我们之前登录的写法
#输入正确的密码登录成功测试

def test_login_Y(self):

    username = "standard_user"

    password = "secret_sauce"

    print("登录的用户名是:%s,密码是:%s"%(username,password))

    driver=login.Login(username,password).login()

    time.sleep(3)

    #加入断言  //*[@id="header_container"]/div[1]/div[2]/div

    # 验证有显示:Products

    UIResult = driver.find_element_by_xpath('//*[@id="header_container"]/div[2]/span').text

    self.assertEqual("Products", UIResult, "密码正确登录验证失败,fail")

    self.driver=driver

我们通过3组数据验证:

2)编写数据参数化的测试脚本

这里列一下上一篇文章我们写的读取Excel中数据的函数,这次要调用。

        有以上的准备条件,可以使用ddt的思路写出了简单重复测试,这里只是用户名和密码的数据不一样的用例了。

#使用unittest的框架,每个案例的标准形式

@ddt

class LoginTest(unittest.TestCase):

    def setUp(self):

        print("登录测试开始")


    #输入正确的密码登录成功测试

    @data(*excel_data)

    def test_login_Y(self,dic):

        driver=login.Login(dic.get("username"),dic.get("password")).login()

        print("此次测试的用户名%s"%dic.get("username"))

        time.sleep(3)

        #加入断言  //*[@id="header_container"]/div[1]/div[2]/div

        # 验证有显示:Products

        UIResult = driver.find_element_by_xpath('//*[@id="header_container"]/div[2]/span').text

        self.assertEqual("Products", UIResult, "密码正确登录验证失败,fail")

        self.driver=driver


    def tearDown(self)#浏览器退出

        self.driver.quit()

        print("登录测试结束")

检查测试结果:

测试了3次对应的用户名如上图。

3)关联我们生成报告并发送邮件的执行

这里只是截图一下,具体可以参考我之前的分享内容。

执行完成以后,测试报告如下:

今天就先学习到这里吧。

每天进步一点点,加油!


网站公告

今日签到

点亮在社区的每一天
去签到