Exemplo n.º 1
0
 def test_register(self):
     for row in CsvFileManager4().read('testdata.csv'):
         driver = self.driver
         driver.get("http://localhost/index.php?m=user&c=public&a=reg")
         #这两种方法没有任何区别,但是后面这中方法扩展性更高,便于框架封装
         #driver.find_element_by_name("username")
         driver.find_element(By.NAME, "username").send_keys(row[0])
         driver.find_element(By.NAME, "password").send_keys(row[1])
         driver.find_element(By.NAME, "userpassword2").send_keys(row[2])
         driver.find_element(By.NAME, "mobile_phone").send_keys(row[3])
         driver.find_element(By.NAME, "email").send_keys(row[4])
         # driver.find_element(By.CLASS_NAME,"reg_btn").click()
         #在for循环中执行测试用例,虽然解决批量执行问题,但是如果第一行测试用例执行失败,后续的用例不会继续执行
         #异常情况,输入完邮箱后,按tab键,检查提示信息是否都是“信息通过验证!”
         #如果页面上提示的信息是“通过信息验证!”,那么测试通过,否则失败
         check_tip = driver.find_element(
             By.CSS_SELECTOR,
             "form > ul > li:nth-child(1) > div > span").text
         print(check_tip)
         #其中check_tip是执行用例时,从网页抓取的信息
         #“通过信息验证!”是来自于手工测试用例,是测试用例执行前的期望结果
         # if check_tip =="通过信息验证!":
         #     print("测试通过")
         # else:
         #     print("测试失败")
         #这样通过if...else语句就可以自动判断测试用例的执行通过情况了
         #断言的写法
         self.assertEqual("通过信息验证!", check_tip)
Exemplo n.º 2
0
class RegisterTest2(unittest.TestCase):
    #3.声明一个变量,读取CSV文件的测试数据
    data_table = CsvFileManager4().read('test_data.csv')

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()
        cls.driver.implicitly_wait(10)
        cls.driver.maximize_window()

    @classmethod
    def tearDownClass(cls):
        time.sleep(30)
        cls.driver.quit()


#4.为test_register方法添加装饰器@ddt.data(),data_table是一个list类型,包含很多元素,在data_table前面增加*号,表示调用 @ddt.data()方法时,我们传入的不是列表,而是单独传的列表中的每个元素,所以*表示把列表中的每个元素都单独看成一个参数
#假如一个方法需要的参数数量不固定时,可以使用这种方法

    @ddt.data(*data_table)
    #5.给方法添加一个参数row,取第一列数据,那么应该是row[1]
    #使用ddt方法,相当于把循环写在了方法的外面,好处是,每次循环都相当于重新执行了这个方法,这样断言就不会阻塞后面的测试用例了
    def test_register(self, row):
        driver = self.driver
        driver.get("http://localhost/index.php?m=user&c=public&a=reg")
        driver.find_element(By.NAME, "username").send_keys(row[0])
        driver.find_element(By.NAME, "password").send_keys(row[1])
        driver.find_element(By.NAME, "userpassword2").send_keys(row[2])
        driver.find_element(By.NAME, "mobile_phone").send_keys(row[3])
        driver.find_element(By.NAME, "email").send_keys(row[4])
        check_tip = driver.find_element(
            By.CSS_SELECTOR, " form> ul > li:nth-child(1) > div > span").text
        self.assertEqual("用户名不低于三位,使用中文、数字、字母皆可!", check_tip)
Exemplo n.º 3
0
class RegisterTest2(MyTestCase):
    #3,声明一个变量
    data_table = CsvFileManager4().read("test_data.csv")
    # @classmethod
    # def setUpClass(cls):
    #     cls.driver=webdriver.Chrome()
    #     cls.driver.implicitly_wait(10)
    #     cls.driver.maximize_window()
    # @classmethod
    # def tearDownClass(cls):
    #     time.sleep(30)
    #     cls.driver.quit()
    @ddt.data(*data_table)
    def test_register(self, row):
        driver = self.driver
        driver.get("http://localhost:8001/index.php?m=user&c=public&a=reg")

        driver.find_element_by_name('username').send_keys(row[0])
        driver.find_element_by_name('password').send_keys(row[1])
        driver.find_element_by_name('userpassword2').send_keys(row[2])
        driver.find_element_by_name('mobile_phone').send_keys(row[3])
        driver.find_element_by_name('email').send_keys(row[4])
        driver.find_element_by_class_name('reg_btn').click()
        dic_pit = driver.find_element_by_css_selector(
            'form.registerform.sign > ul > li:nth-child(1) > div > span').text
        print(dic_pit)
Exemplo n.º 4
0
class RegisterTest2(unittest.TestCase):
    #3.声明一个变量 读取CSV文件的测试数据
    data_teble = CsvFileManager4().read('test_data.csv')

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()
        cls.driver.implicitly_wait(10)
        cls.driver.maximize_window()

    @classmethod
    def tearDownClass(cls):
        time.sleep(30)
        cls.driver.quit()

#4.为test_register方法添加装饰器@ddt.data
#data_teble是一个list类型,包含很多元素,在data_table前加*,表示调用ddt.data()方法时,我们传入的不是列表,而是列表中的每个元素
#所以*的作用是,把列表中的每个单独元素都单独看做成 一个参数

    @ddt.data(*data_teble)
    def test_register(self, row):

        driver = self.driver
        driver.get("http://localhost/index.php?m=user&c=public&a=reg")
        driver.find_element(By.NAME, "username").send_keys(row[0])
        driver.find_element(By.NAME, "password").send_keys(row[1])
        driver.find_element(By.NAME, 'userpassword2').send_keys(row[2])
        driver.find_element(By.NAME, 'mobile_phone').send_keys(row[3])
        driver.find_element(By.NAME, 'email').send_keys(row[4])
        check_tip = driver.find_elements(
            By.CSS_SELECTOR, " form > ul > li:nth-child(1) > div > span").text
        print(check_tip)
        self.assertEqual("通过信息验证!", check_tip)
Exemplo n.º 5
0
class RegisterTest2(unittest.TestCase):
#3.声明一个变量,读取csv文件的测试数据

    data_table = CsvFileManager4().read('testdata.csv')

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome
        cls.driver.implicitly_wait(10)
        cls.driver.maximize_window()

    @classmethod
    def tearDownClass(cls):
        time.sleep(20)
        cls.driver.quit()
#4.为test_register2方法添加装饰器@ddt.dataddt.data(),指定测试数据
#data_table是一个list类型,包含很多元素,在data_table前面加一个星号,表示调用ddt.data方法时我们传入的不是列表,而是单独传的列表中的某一个元素
#所以星号的作用是把列表中的每个元素都单独看成一个参数
#假如一个方法需要的参数数量不固定,我们可以用这种方法
    @ddt.data(*data_table)
    #5.给方法添加一个参数row
    #若想取第一列数据,那么应该是row[1]
    #使用ddt的方法相当于把循环写在方法的外面,好处是每次循环都相当于重新执行这个方法,这样就不会阻塞测试用例了
    def test_register(self,row):
        driver = self.driver
        driver.get("http://localhost/index.php?m=user&c=public&a=reg")

        driver.find_element(By.NAME, "username").send_keys(row[0])
        driver.find_element(By.NAME, "password").send_keys(row[1])
        driver.find_element(By.NAME, "userpassword2").send_keys(row[2])
        driver.find_element(By.NAME, "mobile_phone").send_keys(row[3])
        driver.find_element(By.NAME, "email").send_keys(row[4])


    check_tip = driver.find_element(By.CSS_SELECTOR, "form > ul > li:nth-child(1) > div > span").text
Exemplo n.º 6
0
    def test_register(self):
        for row in CsvFileManager4().read('test_data.csv'):
            driver = self.driver
            driver.get('http://localhost/index.php?m=user&c=public&a=reg')
            #find_element(By.NAME,'username') == driver.find_element_by_name('username')
            #这两种方法没有任何区别 但是后面的这种方法扩展性更好 便于框架封装
            driver.find_element(By.NAME, 'username').send_keys(row[0])
            driver.find_element(By.NAME, 'password').send_keys(row[1])
            driver.find_element(By.NAME, 'userpassword2').send_keys(row[2])
            driver.find_element(By.NAME, 'mobile_phone').send_keys(row[3])
            driver.find_element(By.NAME, 'email').send_keys(row[4])

            driver.find_element_by_name('username').submit()
            #在for循环中执行测试用例 虽然解决了批量执行的问题
            #但是,想想一下 如果第一行数据就报错了 那么后面还执行吗
            #考虑异常情况,输入完邮箱后 按tab键 检查提示信息是否都是通过信息验证
            #怎么验证 如果页面提示信息是通过信息验证 那么测试通过 否则测试失败
            check_tip = driver.find_element_by_css_selector(
                'form.registerform.sign > ul > li:nth-child(1) > div > span'
            ).text
            print(check_tip)
            #其中check_tip是执行用例时,从网页上抓取的信息
            #通过信息验证 是来自于手工测试用例 是测试用例执行前的期望结果
            #if check_tip == '通过信息验证!':
            #print('测试通过')
            #else:
            #print('测试失败')
            #这样通过if...else语句 就可以自动判断测试用例的执行情况
            self.assertEqual('用户名不低于三位,使用中文、数字、字母皆可!', check_tip)
Exemplo n.º 7
0
    def test_register(self):
        for row in CsvFileManager4().read('test_data.csv'):
            driver = self.driver
            driver.get("http://localhost/index.php?m=user&c=public&a=reg")
            # driver.find_element_by_name("username")  ==  driver.find_element(By.NAME, "username")
            # 这两种方法,没有任何区别, 但是后面的这种方法扩展性更好,便于框架封装
            # driver.find_element_by_name("username")
            driver.find_element(By.NAME, "username").send_keys(row[0])
            driver.find_element(By.NAME, "password").send_keys(row[1])
            driver.find_element(By.NAME, "userpassword2").send_keys(row[2])
            driver.find_element(By.NAME, "mobile_phone").send_keys(row[3])
            driver.find_element(By.NAME, "email").send_keys(row[4])
            # driver.find_element(By.CLASS_NAME, "reg_btn").click()
#             在for循环中执行测试用例,虽然解决批量执行的问题
#         但是,想想一下,如果第一行测试用例执行失败, 后续的测试用例还会不会执行
#         考虑异常情况, 输入完邮箱后,按tab键, 检查提示信息是否都是"通过信息验证!"
#        怎么验证? 如果页面上提示的信息是"通过信息验证!", 那么,测试通过, 否则测试失败
            check_tip = driver.find_element(By.CSS_SELECTOR, "form.registerform.sign > ul > li:nth-child(1) > div > span").text
            print(check_tip)
            # 其中check_tip是执行用例时,从网页上抓取的实际结果
            # "通过信息验证!"是来自于手工测试用例,是测试用例执行前的期望结果
            # if check_tip == "通过信息验证!":
            #     print("测试通过")
            # else:
            #     print("测试失败")
#             这样通过if...else语句,就可以自动判断测试用例的执行情况
#           断言的写法
            self.assertEqual("用户名不低于三位,使用中文、数字、字母皆可!222", check_tip)
Exemplo n.º 8
0
class RegisterTest2(unittest.TestCase):
    data_table = CsvFileManager4().read("test_data.csv")
    #3.声明一个变量,读取csv文件的测试数据
    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()
        cls.driver.implicitly_wait(10)
        cls.driver.maximize_window()

    @classmethod
    def tearDownClass(cls):
        time.sleep(30)
        cls.driver.quit

    #4.为test_register方法添加装饰器@ddt.data,指定测试数据data_table
    #data_table是一个list类型,包含很多元素
    #在data_table前面加一个星号,表示调用ddt.data()方法时
    #我们传入的不是列表,而是单独传的列表中的每个元素
    #所以星号的作用就是,把列表中每个元素,都单独看成一个参数
    #假如,一个方法需要的参数数量,我们可以用这种方法
    @ddt.data(*data_table)
    #5.给方法添加一个参数row
    #如果想取第一列数据,那么应该是row[1]
    #使用ddt的方法,相当于把循环写在了方法的外面
    #好处是,每次循环,都相当于重新执行了这个方法
    #这样断言就不会阻塞后面的测试用例了
    def test_register(self, row):
        print("haha")
Exemplo n.º 9
0
 def test_register(self):
     for row in CsvFileManager4().read('test_data.csv'):
         driver = self.driver
         driver.get("http://localhost/index.php?m=user&c=public&a=reg")
         # 这两种方法没有任何区别,但是后面的这种方法扩展性更好,便于框架封装
         # driver.find_element(By.NAME)== driver.find_element_by_name("username")
         driver.find_element(By.NAME, "username").send_keys(row[0])
         driver.find_element(By.NAME, "password").send_keys(row[1])
         driver.find_element(By.NAME, "userpassword2").send_keys(row[2])
         driver.find_element(By.NAME, "mobile_phone").send_keys(row[3])
         driver.find_element(By.NAME, "email").send_keys(row[4])
         #driver.find_element(By.CLASS_NAME,"reg_btn").click()
         #在for循环中执行测试用例,虽然解决了批量执行的问题,但是如果第一行测试用例执行失败,后续的测试用例还会不会执行
         #考虑异常情况,输入完邮箱后,按tab键,检查提示信息是否都是“通过信息验证”
         #怎么验证?如果页面上提示的信息是“通过信息验证!”,那么测试通过,否则测试失败 body > div.w1180 > div > div.reg_main > div.reg_left.fl > form > ul > li:nth-child(1) > div > span
         check_tip = driver.find_element(
             By.CSS_SELECTOR,
             " form.registerform sign > ul > li:nth-child(1) > div > span"
         ).text
         print(check_tip)
         #其中check_tip是执行用例时,从网页上抓取的实际结果
         #“通过信息验证”是来自手工测试用例,是在测试用例执行前的期望结果
         # if check_tip=="通过信息验证!":
         #     print("测试通过")
         # else:
         #     print("测试失败")
         #这样通过if……else语句,就可以自动判断测试用例的执行情况
         self.assertEqual("通过信息验证!", check_tip)
Exemplo n.º 10
0
    def test_register(self):
        for row in CsvFileManager4().read("test_data.csv"):

            driver = self.driver
            driver.get("http://localhost/index.php?m=user&c=public&a=reg")
            #find_element_by_name等于find_element(By.NAME,"name")
            driver.find_element(By.NAME, "username").send_keys(row[0])
            driver.find_element(By.NAME, "password").send_keys(row[1])
            driver.find_element(By.NAME, "userpassword2").send_keys(row[2])
            driver.find_element(By.NAME, "mobile_phone").send_keys(row[3])
            driver.find_element(By.NAME, "email").send_keys(row[4])
            # 在for循环中执行测试用例,虽然解决批量执行的问题

            #输入完邮箱后按tab键,检查提示信息是否都是"通过信息验证"
            #如果页面上提示的信息是"通过信息验证",那么测试通过,否则测试失败
            check_tip = driver.find_element(
                By.CSS_SELECTOR,
                "form > ul > li:nth-child(1) > div > span").text
            print(check_tip)
            # check_tip是执行用例时从网页上抓取的信息
            #"通过信息验证"是期望结果
            # if check_tip=="通过信息验证":
            #     print("测试通过")
            # else:
            #     print("测试失败")
            #断言的写法
            self.assertEqual("通过信息验证", check_tip)
            #不应该用for循环的方式执行不同的测试数据
            #因为在方法中写了for循环虽然执行了多次,但是unittest仍然认为它是一条测试用例,一旦断言失败,就会终止            这条测试用例,所以应该采用ddt框架实现数据驱动

            driver.find_element(By.CLASS_NAME, "reg_btn").click()
Exemplo n.º 11
0
 def test_regiser(self):
     driver = self.driver
     driver.get("http://localhost:8001/")
     driver.find_element_by_link_text("注册").click()
     driver.switch_to.window(driver.window_handles[-1])
     for row in CsvFileManager4().read("test_data.csv"):
         driver.find_element_by_name('username').send_keys(row[0])
         driver.find_element_by_name('password').send_keys(row[1])
         driver.find_element_by_name('userpassword2').send_keys(row[2])
         driver.find_element_by_name('mobile_phone').send_keys(row[3])
         driver.find_element_by_name('email').send_keys(row[4])
         driver.find_element_by_class_name('reg_btn').click()
Exemplo n.º 12
0
class RegisterTest(MyTestCase):
    data_table = CsvFileManager4().read("test_data.csv")
    @ddt.data(*data_table)
    def test_register(self,row):
        sql = 'select * from hd_user order by id desc;'
        #数据库验证,测试的正常情况
        driver = self.driver
        driver.get("http://localhost/index.php?m=user&c=public&a=reg")  # 这两种方法,没有任何区别,但是后面的这种方法扩展性更好,便于框架封装
        driver.find_element(By.NAME, "username").send_keys(row[0])
        driver.find_element(By.NAME, "password").send_keys(row[1])
        driver.find_element(By.NAME, "userpassword2").send_keys(row[2])
        driver.find_element(By.NAME, "mobile_phone").send_keys(row[3])
        driver.find_element(By.NAME, "email").send_keys(row[4])
        driver.find_element(By.CLASS_NAME, "reg_btn").click()
        time.sleep(2)
        new_record = DBConnection().execute_sql_command(sql)
        self.assertEqual(row[0],new_record[1])
Exemplo n.º 13
0
class LoginTest(MyTestCase):
    list = CsvFileManager4().read("test_data1.csv")
    #这时,这个类不需要再写setup和teardow方法了.
    @ddt.data(*list)
    def test_login2(self, row):
        # def login_info(self,username='******',passwrod='123456'):
        ff = LoginPage(self.driver)
        ff.open()
        ff.input_name(row[0])
        ff.input_password(row[1])
        ff.click_login_button()
        time.sleep(3)
        try:
            member_conter_page = MemberCenterPage(self.driver)
            welcomeTxt = member_conter_page.get_webcome_link_text()
        except Exception as e:
            return print(e)
        self.assertEqual(welcomeTxt, "您好 %s" % row[0])
Exemplo n.º 14
0
class RegisterTest2(unittest.TestCase):
    # 3.声明一个变量,读取csv文件的测试数据
    data_table = CsvFileManager4().read('test_data.csv')

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()
        cls.driver.implicitly_wait(10)
        cls.driver.maximize_window()

    @classmethod
    def tearDownClass(cls):
        time.sleep(30)
        cls.driver.quit()

    # 4.为test_register方法添加装饰器@ddt.data,指定测试数据data_table
    # data_table是一个list类型,包含很多元素
    # 在data_table前面加一个*表示调用ddt.data方法是,我们传入的不是列表而是单独传的列表中的某一个元素
    # 所以*的作用就是,把列表中每个元素,都单独看成一个参数
    # 假如一个方法需要的参数数量不固定,我们可以用这种方法

    @ddt.data(*data_table)
    # 5.给方法添加一个参数row
    # 如果想取第一列数据,那么应该是row[0]
    # 使用ddt的方法,相当于把循环卸载了方法的外面,好处是,每次循环,都相当于重新执行这个方法
    # 这样断言就不会阻塞后面的测试用例了

    def test_register(self,row):
        driver = self.driver
        driver.get("http://localhost/index.php?m=user&c=public&a=reg")
        driver.find_element(By.NAME, 'username').send_keys(row[0])
        driver.find_element(By.NAME, 'password').send_keys(row[1])
        driver.find_element(By.NAME, 'userpassword2').send_keys(row[2])
        driver.find_element(By.NAME, 'mobile_phone').send_keys(row[3])
        driver.find_element(By.NAME, 'email').send_keys(row[4])
        driver.find_element(By.CLASS_NAME, 'reg_btn').click()
        time.sleep(3)

        check_tip = driver.find_element(By.CSS_SELECTOR, 'body > div.w1180 > div > div.reg_main > div.reg_left.fl > form > ul > li:nth-child(6) > p > input').text
        # 断言写法
        self.assertEqual("请输入", check_tip)
    def test_register(self):
        driver = self.driver
        driver.get("http://localhost/index.php?m=user&c=public&a=reg")
Exemplo n.º 15
0
 def test_register(self):
     for row in CsvFileManager4().read('test_data.csv'):
         driver = self.driver
         driver.get("http://localhost/index.php?m=user&c=public&a=reg")
         driver.find_element(By.NAME, "username").send_keys(row[0])
         driver.find_element(By.NAME, "password").send_keys(row[1])
         driver.find_element(By.NAME, "userpassword2").send_keys(row[2])
         driver.find_element(By.NAME, "mobile_phone").send_keys(row[3])
         driver.find_element(By.NAME, "email").send_keys(row[4])
         #   driver.find_element(By.CLASS_NAME,"reg_btn").click()
         check_tip = driver.find_element(
             By.CSS_SELECTOR,
             "form > ul > li:nth-child(1) > div > span").text
         print(check_tip)
         # if check_tip=="通过信息验证!":
         #     print("测试通过")
         # else:
         #     print("测试失败")
         self.assertEquals("通过信息验证!", check_tip)
Exemplo n.º 16
0
class RegisterTest2(unittest.TestCase):
    # 3.声明一个变量,读取csv文件的测试数据
    data_table = CsvFileManager4().read('test_data.csv')

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()
        cls.driver.implicitly_wait(10)
        cls.driver.maximize_window()

    @classmethod
    def tearDownClass(cls):
        time.sleep(30)
        cls.driver.quit()


# 4. 为test_register方法添加装饰器@ddt.data, 指定测试数据data_table
# data_table是一个list类型, 包含很多元素
# 在data_table前面加一个星号,表示调用ddt.data()方法时
# 我们传入的不是列表, 而是单独传的列表中的每个元素
# 所以,星号的作用就是. 把列表中每个元素, 都单独看成一个参数
# 假如, 一个方法需要的参数数量不固定,我们可以用这种方法

    @ddt.data(*data_table)
    # 5.给方法添加一个参数row
    # 如果想去第一列数据,那么应该是row[1]
    # 使用ddt的方法,相当于把循环写在了方法的外面
    # 好处是, 每次循环, 都相当于重新执行这个方法
    # 这样断言就不会阻塞后面的测试用例了
    def test_register(self, row):
        driver = self.driver
        driver.get("http://localhost/index.php?m=user&c=public&a=reg")
        driver.find_element(By.NAME, "username").send_keys(row[0])
        driver.find_element(By.NAME, "password").send_keys(row[1])
        driver.find_element(By.NAME, "userpassword2").send_keys(row[2])
        driver.find_element(By.NAME, "mobile_phone").send_keys(row[3])
        driver.find_element(By.NAME, "email").send_keys(row[4])

        check_tip = driver.find_element(
            By.CSS_SELECTOR,
            "form.registerform.sign > ul > li:nth-child(1) > div > span").text
        self.assertEqual("222用户名不低于三位,使用中文、数字、字母皆可!222", check_tip)
Exemplo n.º 17
0
 def test_register(self):
     for row in CsvFileManager4().read('test_data.csv'):
         driver = self.driver
         driver.get("http://localhost/index.php?m=user&c=public&a=reg")
         #       driver.find_element_by_name("username")
         driver.find_element(By.NAME, "username").send_keys(row[0])
         driver.find_element(By.NAME, "password").send_keys(row[1])
         driver.find_element(By.NAME, 'userpassword2').send_keys(row[2])
         driver.find_element(By.NAME, 'mobile_phone').send_keys(row[3])
         driver.find_element(By.NAME, 'email').send_keys(row[4])
         #            driver.find_element(By.LINK_TEXT, '注册').click()
         check_tip = driver.find_elements(
             By.CSS_SELECTOR,
             " form > ul > li:nth-child(1) > div > span").text
         print(check_tip)
         if check_tip == "通过信息验证!":
             print("测试通过")
         else:
             print("测试失败")
         self.assertEqual("通过信息验证!", check_tip)
Exemplo n.º 18
0
class RegisterTest2(unittest.TestCase):

    #3.声明一个变量,读取CSV文件的测试数据
    data_table = CsvFileManager4().reader('testdata.csv')

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()
        cls.driver.implicitly_wait(10)
        cls.driver.maximize_window()

    @classmethod
    def tearDownClass(cls):
        time.sleep(30)
        cls.driver.quit()


#4.为test_register方法添加装饰@ddt.data,指定测试数据
#data_table是一个list类型,包含很多元素
#在data_table前面加一个星号,表示调用ddt.date()方法时,我们传入的不是列表,而是单独传列表中的每个元素
#所以,星号的作用就是,把列表中每个元素,都单独看成一个参数
#假如一个方法需要的参数数量不固定,我们可以用这种方法

    @ddt.data(*data_table)
    #5.给方法添加一个参数,row
    #如果想取第一列数据,那么应该是row[1]
    def test_register(self, row):
        driver = self.driver
        driver.get("http://localhost/index.php?m=user&c=public&a=reg")
        driver.find_element(By.NAME, "username").send_keys([row[0]])
        # driver.find_element_by_name("username").send_keys([row[0]])
        driver.find_element(By.NAME, "password").send_keys([row[1]])
        driver.find_element(By.NAME, "userpassword2").send_keys(row[2])
        driver.find_element(By.NAME, "mobile_phone").send_keys(row[3])
        driver.find_element(By.NAME, "email").send_keys(row[4])
        check_tip = driver.find_element(
            By.CSS_SELECTOR,
            "form.registerform.sign > ul > li:nth-child(1) >div > span").text

        print(check_tip)
Exemplo n.º 19
0
class RegisterTest2(unittest.TestCase):
    #3.声明一个变量 读取csv文件的测试数据
    data_table = CsvFileManager4().read('test_data.csv')

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()
        cls.driver.implicitly_wait(10)
        cls.driver.maximize_window()

    @classmethod
    def tearDownClass(cls):
        time.sleep(10)
        cls.driver.quit()

    #4.为test_register方法添加装饰@ddt.data 指定测试数据data_table
    #data_table是一个list类型 包含很多元素
    #在data_table前面加一个星号 表示调用ddt.data()方法时
    #我们传入的不是列表 而是单独传的列表中的每个元素
    #所以星号的作用是把一个列表中的所有元素都单独看成一个参数
    #假如一个方法需要的参数数量不固定,我们可以用这种方法
    @ddt.data(*data_table)
    #5.给方法添加一个参数row
    #如果想取第一列数据 那么应该是row[1]
    #使用ddt的方法 相当于把循环写在了方法外面
    #好处是,每次循环都相当与重新执行这个方法
    #这样断言就不会阻塞后面的测试用例了
    def test_register(self, row):
        driver = self.driver
        driver.get('http://localhost/index.php?m=user&c=public&a=reg')
        driver.find_element(By.NAME, 'username').send_keys(row[0])
        driver.find_element(By.NAME, 'password').send_keys(row[1])
        driver.find_element(By.NAME, 'userpassword2').send_keys(row[2])
        driver.find_element(By.NAME, 'mobile_phone').send_keys(row[3])
        driver.find_element(By.NAME, 'email').send_keys(row[4])
        driver.find_element_by_name('username').submit()
        check_tip = driver.find_element_by_css_selector(
            'form.registerform.sign > ul > li:nth-child(1) > div > span').text
        self.assertEqual('通过信息验证!', check_tip)
Exemplo n.º 20
0
class RegisterTest2(unittest.TestCase):
    #3/声明一个变量 ,读取csv文件的测试数据
    data_table =  CsvFileManager4().read('test_data.csv')
    @classmethod
    def setUpClass(cls):
        cls.driver =webdriver.Chrome()
        cls.driver.implicitly_wait(10)
        cls.driver.maximize_window()
    @classmethod
    def tearDownClass(cls):
        time.sleep(30)
        cls.driver.quit()

    #为test_register  方法 添加装饰器 @ddt.data,指定测试数据
    #data_table  是一个list 类型,包含很多元素
    #在data_table 前面加一个* 号表示调用 ddt.data()方法时
    #我们传入的不是列表,而是单独传的列表中的每一个元素
    #所以*号的作用就是 把列表中的每个元素 都单独看成一个参数
    #假如 一个方法需要的参数数点不固定,我们可以用这种方法
    @ddt.data(*data_table)
    #5/给方法添加一个参数, row
    #如果想取第一列数据,那么应该是row([1])
    def test_register(self,ros):
        driver = self.driver
        driver.get("http://localhost/index.php?m=user&c=public&a=reg")
            # find_elemrnt()
            # driver.find_element_by_name("username")=driver.find_element(By.NAME,"username")
            # 这两种方法没有任何区别,但是后面这中方法扩展性更好,便于框架封装
        driver.find_element(By.NAME, "username").send_keys(ros[0])
        driver.find_element(By.NAME, "password").send_keys(ros[1])
        driver.find_element(By.NAME, "userpassword2").send_keys(ros[2])
        driver.find_element(By.NAME, "mobile_phone").send_keys(ros[3])
        driver.find_element(By.NAME, "email").send_keys(ros[4])



        check_tip = driver.find_element(By.CSS_SELECTOR," body > div.w1180 > div > div.reg_main > div.reg_left.fl > form > ul > li:nth-child(1) > div > span").text
        self.assertEqual("用户名不低于三位,使用中文、数字、字母皆可!", check_tip)
Exemplo n.º 21
0
    def test_register(self):
        for row in CsvFileManager4().read('test_data.csv'):

            driver = self.driver
            driver.get("http://localhost/index.php?m=user&c=public&a=reg")
            driver.find_element(By.NAME, 'username').send_keys(row[0])
            #driver.find_element_by_name()与上边的一样,没有任何区别,但是第一种方法扩展性更好,便于我们的框架封装
            driver.find_element(By.NAME, 'password').send_keys(row[1])
            driver.find_element(By.NAME, 'userpassword2').send_keys(row[2])
            driver.find_element(By.NAME, 'mobile_phone').send_keys(row[3])
            driver.find_element(By.NAME, 'email').send_keys(row[4])

            driver.find_element(By.CLASS_NAME, 'reg_btn').click()

            # 在for循环中执行测试用例,虽然解决批量执行的问题,但是如果第一行测试用例执行失败,后续的测试用例还会不会执行
            # 异常情况,输入完邮箱后,按tab键,检查提示信息是否都是通过信息验证状态
            # 如果页面上提示的心事是通过信息验证,那么就认为测试用例成功了,否则失败
            check_tip = driver.find_element(
                By.CSS_SELECTOR,
                'body > div.w1180 > div > div.reg_main > div.reg_left.fl > form > ul > li:nth-child(6) > p > input'
            ).text
            # 断言写法
            self.assertEqual("请输入", check_tip)
Exemplo n.º 22
0
class RegisterTest2(unittest.TestCase):
    # 3 声明一个变量,读取csv文件的测试数据
    data_table=CsvFileManager4().read('test_data.csv')

    @classmethod
    def setUpClass(cls):
        cls.driver=webdriver.Chrome()
        cls.driver.implicitly_wait(5)
        cls.driver.maximize_window()

    @classmethod
    def tearDownClass(cls):
        time.sleep(10)
        cls.driver.quit()
    # 4 为test_register方法添加装饰器@ddt.data,为这个方法指定测试数据
    # data_table是一个list类型,其中包含很多数据
    # 在data_table前面加一个*,表示调用ddt.data方法时,传入的不是列表,而是单独传入某一个元素
    # 所以*作用是:把列表中所有元素都单独看做一个参数
    # 假如一个方法需要的数量不固定,我们可以用这种方法
    @ddt.data(*data_table)
    # 5 给方法添加一个参数row
    # 取第一列数据,那么应该是row[1]
    # 使用ddt方法,相当于把循环写在了方法的外面,好处是:每次循环都相当于重新执行了这个方法
    # 这样断言就不会阻塞后续的测试用例了
    def test_register(self,row):
        driver=self.driver
        driver.get("http://localhost/index.php?m=user&c=public&a=reg")
        driver.find_element(By.NAME, 'username').send_keys(row[0])
        driver.find_element(By.NAME, 'password').send_keys(row[1])
        driver.find_element(By.NAME, 'userpassword2').send_keys(row[2])
        driver.find_element(By.NAME, 'mobile_phone').send_keys(row[3])
        driver.find_element(By.NAME, 'email').send_keys(row[4])

        check_tip = driver.find_element(By.CSS_SELECTOR,
                                        'form.registerform.sign > ul > li:nth-child(1) > div > span').text

        self.assertEqual(check_tip,'通过信息验证!')
Exemplo n.º 23
0
    def test_register(self):
        for row in CsvFileManager4().reader('testdata.csv'):
            driver = self.driver
            driver.get("http://localhost/index.php?m=user&c=public&a=reg")
            #这两种方法没有任何区别,但是后面的 driver.find_element_by_name("username")扩展性更好,便于框架封装
            driver.find_element(By.NAME, "username")
            driver.find_element_by_name("username").send_keys([row[0]])
            driver.find_element(By.NAME, "password").send_keys([row[1]])
            driver.find_element(By.NAME, "userpassword2").send_keys(row[2])
            driver.find_element(By.NAME, "mobile_phone").send_keys(row[3])
            driver.find_element(By.NAME, "email").send_keys(row[4])

            check_tip = driver.find_element(
                By.CSS_SELECTOR,
                "form.registerform.sign > ul > li:nth-child(1) >div > span"
            ).text
            print(check_tip)
            '''
            if check_tip == "通过信息验证":
                print("passed")
            else:
                print("error")
            '''
            self.assertEqual("通过信息验证!", check_tip)
Exemplo n.º 24
0
 def test_register(self):
     for row in CsvFileManager4().read('test_data.csv'):
         driver = self.driver
         driver.get("http://localhost/index.php?m=user&c=public&a=reg")
         #find_element(),下面两种方法没有任何区别,但是第二种方法扩展性更好,便于数据库封装
         #driver.find_element_by_name("username")
         driver.find_element(By.NAME, "username").send_keys(row[0])
         driver.find_element(By.NAME, "password").send_keys(row[1])
         driver.find_element(By.NAME, "userpassword2").send_keys(row[2])
         driver.find_element(By.NAME, "mobile_phone").send_keys(row[3])
         driver.find_element(By.NAME, "email").send_keys(row[4])
         #driver.find_element(By.CLASS_NAME,"reg_btn").click()
         #for循环中执行测试用例,虽然解决了批量执行的问题,但是如果第一行数据就失败了,后续的测试用还会不会被执行  考虑异常情况输入完邮箱后,按tab键,检查提示信息是否都是“通过信息验证”
         check_tip = driver.find_element(
             By.CSS_SELECTOR,
             " form> ul > li:nth-child(1) > div > span").text
         print(check_tip)
         #其中check_tip是执行用历史从网页上抓取的实际结果,“通过信息验证”是来自与手工测试用,是在测试用例执行前的期望结果,
         #if check_tip=="通过信息验证":
         #   print("测试通过")
         #else:
         #   print("测试失败")
         #   #通过if else语句可以自动判断测试用例的执行情况
         self.assertEqual("通过信息验证", check_tip)
Exemplo n.º 25
0
class RegisterTest2(unittest.TestCase):
    #声明一个变量,读取csv文件的测试数据
    data_table = CsvFileManager4().read('test_data.csv')

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()
        cls.driver.implicitly_wait(10)
        cls.driver.maximize_window()

    @classmethod
    def tearDownClass(cls):
        time.sleep(30)
        cls.driver.quit()


#4.为test_register方法添加装饰器@ddt.data
#data_table是一个list类型,包含很多元素
#在data_table前面加一个*星号,表示调用ddt.data()方法时
#我们传入的不是列表.而是单独传的列表中的每个元素
#所以,星号的作用就是.把列表中的每个元素都单独看做一个参数

    @ddt.data(*data_table)
    #5.给方法添加一个参数row
    #如果想取第一列数据,应该是row[1]
    def test_register(self, row):
        driver = self.driver
        driver.get("http://localhost/index.php?m=user&c=public&a=reg")
        driver.find_element(By.NAME, "username").send_keys(row[0])
        driver.find_element(By.NAME, "password").send_keys(row[1])
        driver.find_element(By.NAME, "userpassword2").send_keys(row[2])
        driver.find_element(By.NAME, "mobile_phone").send_keys(row[3])
        driver.find_element(By.NAME, "email").send_keys(row[4])
        check_tip = driver.find_element(
            By.CSS_SELECTOR, "form > ul > li:nth-child(1) > div > span").text
        self.assertEquals("用户名不低于三位,使用中文、数字、字母皆可!", check_tip)
Exemplo n.º 26
0
class RegisterTest2(unittest.TestCase):
    #3.声明一个变量,读取csv文件数据
    data_table = CsvFileManager4().read('test_data.csv')
    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()
        cls.driver.implicitly_wait(20)
        cls.driver.maximize_window()

    @classmethod
    def tearDownClass(cls):
        time.sleep(30)
        cls.driver.quit()

    #4.为test_register2方法添加装饰器@ddt.data,指定测试数据data_table
    #@ddt.data是一个list类型,包含很多元素
    #在data_table前面加一个星号*,表示调用ddt.data()方法时我们传入的不是列表,而是单独传的列表中的每个元素
    #所以星号的作用就是把列表中的每个元素,都单独看成一个参数
    @ddt.data(*data_table)
    #5.给方法添加一个参数row
    #如果想取第一列数据,那么应该是row[1]
    #使用ddt方法相当于把循环写在了方法外面,每次循环,相当于重新执行这个方法,这样断言就不会阻塞后面的测试用例
    def test_register2(self,row):
        driver = self.driver
        driver.get("http://localhost/index.php?m=user&c=public&a=reg")
        driver.find_element(By.NAME, 'username').send_keys(row[0])
        driver.find_element(By.NAME, 'password').send_keys(row[1])
        driver.find_element(By.NAME, 'userpassword2').send_keys(row[2])
        driver.find_element(By.NAME, 'mobile_phone').send_keys(row[3])
        driver.find_element(By.NAME, 'email').send_keys(row[4])
        # driver.find_element(By.LINK_TEXT,'注册').click()

        check_tip = driver.find_element(By.CSS_SELECTOR, 'form > ul > li:nth-child(1) > div > span').text
        print(check_tip)

        self.assertEqual("通过信息验证!", check_tip)
Exemplo n.º 27
0
    def test_register(self):
        for row in CsvFileManager4().read("test_data.csv"):
            driver = self.driver
            driver.get("http://localhost/index.php?m=user&c=public&a=reg")

            #这两种方法,没有任何区别,但是后面的这种方法扩展性更好,便于框架封装
            driver.find_element(By.NAME, "username").send_keys(row[0])
            driver.find_element(By.NAME, "password").send_keys(row[1])
            driver.find_element(By.NAME, "userpassword2").send_keys(row[2])
            driver.find_element(By.NAME, "mobile_phone").send_keys(row[3])
            driver.find_element(By.NAME, "email").send_keys(row[4])
            driver.find_element(By.CLASS_NAME, "reg_btn").click()
            # driver.find_element_by_name("username")

            #在for循环中执行测试用例,虽然解决批量执行的问题
            #但是,想一下,如果第一行测试用例执行失败,后续的测试用例还会不会执行
            #考虑异常情况,输入完邮箱后,按tab键,检查提示信息是否都是“通过信息验证”
            #怎么验证?如果页面上提示的信息是“通过信息验证!”,那么测试通过,否则测试失败
            check_tip = driver.find_element(
                By.CSS_SELECTOR,
                "form.registerform.sign > ul > li:nth-child(1) > div > span"
            ).text
            print(check_tip)
            self.assertEqual("用户名不低于三位,使用中文、数字、字母皆可!", check_tip)