zoukankan      html  css  js  c++  java
  • python-ddt实践

    注:这是一小篇学习随笔,使用 python3 语言,ddt 数据驱动,实现新浪微博登录页不同情况下返回错误信息的验证。

    一、实践准备

    1、python3 环境,chrome 浏览器,PyCharm 编辑器,见另篇:python+selenium环境

    2、ddt 是 python 的第三方库,详细信息见官网:ddt 官网点这里

    3、在 python3 安装路劲下 cmd 运行命令:pip install ddt,就可以安装 ddt。

    二、开始实践

    1、实践要求:实现编写一条测试用例的代码验证多个测试点。

      例如,在新浪微博登录页面中,多种情况:用户名和密码都为空,用户名为空、密码不为空,用户名不为空、密码为空,分别返回不同的错误提示信息。

    2、通过 ddt 来实现,在 python 命令行环境中即可导入。在 ddt 模块中:

      @data 表示元组的列表数据,

      @unpack 表示来解压元组到多个参数。

    变量 divText 取用 xpath :'/html/body/div[1]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]' 的 text 文本。

    实现代码:

    __author__ = "XXX"
    
    import unittest
    import time as t
    from selenium import webdriver
    from ddt import data,unpack,ddt
    
    @ddt
    class SinaLogin(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.get('http://mail.sina.com.cn/')
            self.driver.implicitly_wait(30)
    
        def tearDown(self):
            t.sleep(3)
            self.driver.quit()
    
        @data(('','','请输入邮箱名'),('','admin','请输入邮箱名'),('admin','','您输入的邮箱名格式不正确'))
        @unpack
        def test_login(self,username,password,result):
            '''验证:测试新浪邮箱登录N中情况'''
            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()
            divText = self.driver.find_element_by_xpath('/html/body/div[1]/div/div[2]/'
                                                        'div/div/div[4]/div[1]/div[1]/div[1]/span[1]').text
            #在freeError里,,根据情况输入情况变化的
            self.assertEqual(divText,result)
    
    if __name__ == '__main__':
        unittest.main(verbosity=2)  

    执行后的效果:

      也可以把 @data 中的数据分离到一个方法中,如存储在列表中,只需要在 @data 中增加 ”*“ 调用函数 getData,因为 @data 要求的数据类型是元组,加 ”*“ 后便把 getData 函数返回的数据列表型变为元组类型。

    修改后的代码:

    __author__ = "XXX"
    
    import unittest
    import time as t
    from selenium import webdriver
    from ddt import data,unpack,ddt
    
    def getData():
        '''数据分离出来放到列表中'''
        return [
            ['','','请输入邮箱名'],
            ['','admin','请输入邮箱名'],
            ['admin','','您输入的邮箱名格式不正确']
        ]
    
    @ddt
    class SinaLogin(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.get('http://mail.sina.com.cn/')
            self.driver.implicitly_wait(30)
    
        def tearDown(self):
            t.sleep(3)
            self.driver.quit()
    
        @data(*getData())#调用函数getData
        @unpack
        def test_login(self,username,password,result):
            '''验证:测试新浪邮箱登录N中情况'''
            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()
            divText = self.driver.find_element_by_xpath('/html/body/div[1]/div/div[2]/'
                                                        'div/div/div[4]/div[1]/div[1]/div[1]/span[1]').text
            #在freeError里,根据情况输入情况变化的
            self.assertEqual(divText,result)
    
    if __name__ == '__main__':
        unittest.main(verbosity=2)
    

      执行后的效果一致。

    谢谢查看!

    2019-11-16

  • 相关阅读:
    win7网络共享原来如此简单,WiFi共享精灵开启半天都弱爆了!
    JQUERY UI Datepicker Demo
    Official online document, install svn server in centOS
    JAVE not work in linux
    AMR 转mp3 失败
    XD, XR, DR 股票
    Linux 下MySql 重置密码
    Difinition Of Done
    Apache, Tomcat, JK Configuration Example
    Linux 安装tomcat
  • 原文地址:https://www.cnblogs.com/yuntimer/p/11872295.html
Copyright © 2011-2022 走看看