基于Python ddt, selenium数据驱动测试实例1

#!/usr/bin/python 
# -*- coding: utf-8 -*-

'''
Created on 2015-04-27
@author: beyondzhou
@name: logintest.py
'''

import unittest
from ddt import ddt, data, unpack
from selenium import webdriver
import os
import time
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By

@ddt
class LoginTest(unittest.TestCase):
    
    @classmethod
    def setUp(cls):
        # Get the driver of chrome
        chromedriver = "C:\Program Files\Google\Chrome\Application\chromedriver.exe"
        os.environ["webdriver.chrome.driver"] = chromedriver
        cls.browser = webdriver.Chrome(chromedriver)
        cls.browser.get('http://10.10.51.150')
        time.sleep(1)

    @data(("admin", "pica8", "Configuration"), ("admin", "pica9", "Invalid username or password"))
    @unpack
    def test_login_in(self, username, password, expected_value):
        # test login in              
        self.browser.find_element_by_xpath("//input[@placeholder='Username']").send_keys(username)
        self.browser.find_element_by_xpath("//input[@placeholder='Password']").send_keys(password)
        self.browser.find_element_by_tag_name("button").click()
        time.sleep(1)
        self.assertTrue(self.is_content_present("%s" % expected_value)) 
        
    def is_element_present(self, how, what):
        """
        Utility method to check presence of an element on page
        :params how: by locator type
        :params what: locator value
        """
        try: 
            self.browser.find_element(by=how, value=what)
        except NoSuchElementException, _:
            return False
        return True
    
    def is_content_present(self, what):
        """
        Utility method to check presence of an element on page
        :params what: content value
        """
        try: 
            self.browser.find_element(by=By.XPATH, value="//*[contains(text(), '%s')]" % what)
        except NoSuchElementException, _:
            return False
        return True
    
    @classmethod
    def tearDown(cls):
        # define when you need
        cls.browser.quit()
        
if __name__ == '__main__':
    unittest.main(verbosity=2)


Result:

test_login_in_1___admin____pica8____Configuration__ (__main__.LoginTest) ... ok
test_login_in_2___admin____pica9____Invalid_username_or_password__ (__main__.LoginTest) ... ok

----------------------------------------------------------------------
Ran 2 tests in 17.688s

OK


文章来自:http://blog.csdn.net/guaguastd/article/details/45394081
© 2021 jiaocheng.bubufx.com  联系我们
ICP备案:鲁ICP备09046678号-3