花非花,雾非雾
临渊羡鱼,不如退而结网。

之前selenium+python自动化测试--登录  中,几个账号和密码登录就要写几个用例,感觉很麻烦~,所以下面介绍一下用数据驱动实现不同用例的登录。

话不多说,直接贴代码~~

文件名称:test_ddtlogin.py

import ddt
import unittest
from selenium import webdriver
from common.base import Base

testdata = [
    {'user':'','psw':'','exp':'请输入手机号码'},
    {'user':'admin','psw':'','exp':'请输入密码'},
    {'user':'','psw':'666666','exp':'请输入手机号码'},
    {'user':'admin','psw':'666666','exp':'账号不存在'}
]

@ddt.ddt
class Testddt(unittest.TestCase):
    # 定位手机号
    username = ("name", "loginName")
    # 定位密码
    psw = ("name", "loginPassWord")
    # 定位登录按钮
    loginbutton = ("id", "loginBtn")
    # 定位提示信息
    message = ("className", "toast-message")

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Firefox()
        cls.baseddt = Base(cls.driver)
        cls.driver.get("不愿透露姓名的url")

    def setUp(self):
        self.baseddt.clear(self.username)
        self.baseddt.clear(self.psw)

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

    # 加载测试数据
    @ddt.data(*testdata)

    def test_01(self,data):
        username = data['user']
        password = data['psw']
        exp = data['exp']
        #输入手机号
        self.baseddt.send(self.username,username)
        #输入密码
        self.baseddt.send(self.psw,password)
        #点击登录按钮
        self.baseddt.click(self.loginbutton)
        #获取结果
        result = self.baseddt.find(self.message).text
        print("我是结果:", result)
        self.assertEqual(result, exp)

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

 上面代码运行多次后,发现最后一个用例执行失败了,觉得可能是缓存问题,所以还是改成下面的代码:

 

import ddt
import unittest
from selenium import webdriver
from common.base import Base

testdata = [
    {'user':'','psw':'','exp':'请输入手机号码'},
    {'user':'admin','psw':'','exp':'请输入密码'},
    {'user':'','psw':'666666','exp':'请输入手机号码'},
    {'user':'admin','psw':'666666','exp':'账号不存在'}
]

@ddt.ddt
class Testddt(unittest.TestCase):
    # 定位手机号
    username = ("name", "loginName")
    # 定位密码
    psw = ("name", "loginPassWord")
    # 定位登录按钮
    loginbutton = ("id", "loginBtn")
    # 定位提示信息
    message = ("className", "toast-message")

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Firefox()
        cls.baseddt = Base(cls.driver)

    def setUp(self):
        self.driver.get("不愿透露姓名的url")

    def tearDown(self):
        self.driver.delete_all_cookies()

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

    # 加载测试数据
    @ddt.data(*testdata)

    def test_01(self,data):
        username = data['user']
        password = data['psw']
        exp = data['exp']
        #输入手机号
        self.baseddt.send(self.username,username)
        #输入密码
        self.baseddt.send(self.psw,password)
        #点击登录按钮
        self.baseddt.click(self.loginbutton)
        #获取结果
        result = self.baseddt.find(self.message).text
        print("我是结果:", result)
        self.assertEqual(result, exp)

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

 

运行结果:

 

纯属个人思路,如有错误请在评论区指出,一定立即纠正。非常感谢~ 

读取文件操作请看下回分解😜

 

posted on 2019-07-26 17:10  雨点小  阅读(1633)  评论(0编辑  收藏  举报