ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-ddt实践

2019-11-16 16:54:26  阅读:283  来源: 互联网

标签:__ python self driver 实践 ddt div find


注:这是一小篇学习随笔,使用 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

标签:__,python,self,driver,实践,ddt,div,find
来源: https://www.cnblogs.com/yuntimer/p/11872295.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有