Python web框架搭建

web自动化的作用就是通过代码自动化代替人工手动测试,节省人力、时间和精力;那么又是如果进行自动测试呢?思路如下:

下面通过一个例子说明一下:登录操作


手动测试是直接在输入框输入用户名、密码、然后点击登录按钮;

那么代码也同样道理;

1、先定位到用户名、密码的输入框元素和登录按钮元素---pagelocators模块

pagelocators模块--login_locator.py(LoginLocator类)

from selenium.webdriver.common.by import By
class LoginLocator:
#定位用户名输入框
uer_account=(By.XPATH,'//input[@placeholder="请输入你的账号/手机号"]')
#定位密码输入框
password=(By.XPATH,'//input[@placeholder="请输入你的密码"]')
#定位登录按钮
button=(By.XPATH,'//button[@id="loginBtn"]')


 

2、然后进行输入用户名、密码、点击登录按钮操作(前提准备好测试用例--testdatas模块)---pageprojects模块

pageprojects模块---login_page.py(定义LoginPage类):

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from PageLocators.login_locator import LoginLocator as loc
from Commons.BasePage import BasePage
import time

class LoginPage(BasePage):
       #登录操作
      def login_success(self,account,password):
            name="登录模块"
            WebDriverWait(self.driver,30).until(EC.visibility_of_element_located(loc.uer_account))
            self.driver.find_element(*loc.uer_account).clear()
            self.driver.find_element(*loc.uer_account).send_keys(account)
            WebDriverWait(self.driver,30).until(EC.visibility_of_element_located(loc.password))
            self.driver.find_element(*loc.password).clear()
            self.driver.find_element(*loc.password).send_keys(password)
            self.driver.find_element(*loc.button).click()
            self.save_webImgs(model=name)
            time.sleep(1)


 

testdatas模块--Login_datas.py

#正常场景---正常登录
success_data={'account':'101****4088','password':'******','check':'登录成功'}


 

3、进行测试用例操作---testcases模块

testcases模块--test_login.py(TestApi类并继承(unittest.TestCase))

from selenium import webdriver
from TestDatas import common_datas as cd
from TestDatas import Login_datas as ld
from ddt import ddt,data
import unittest
from PageProjects.login_page import LoginPage

def setUp(self):
    #配置WebDriver驱动的环境变量
    chrome_driver=r"C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chromedriver.exe"
    #打开浏览器
    self.driver=webdriver.Chrome(chrome_driver)
    #打开Aos登录页面
    self.driver.get("http://*****/cn/login")
    self.driver.maximize_window()
    self.lp=LoginPage(self.driver)

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

#成功登录的情况
def test_login_1_success(self):
     logging.info("*********登录用例:正常场景:使用正确的用户名和密码登陆*********")
     #登录页面--登录功能--输入用户名和密码
     self.lp.login_success(ld.success_data['account'],ld.success_data['password'])
    #断言
    try:
        act_check=self.lp.get_success_msg()
        self.assertEqual(act_check,ld.success_data['check'])
        logging.info('成功登录的用户名{0},密码为{1}'.format(ld.success_data['account'],ld.success_data['password']))
        logging.info('登录成功')
    except EnvironmentError as e:
        logging.info("登录异常{0}".format(e))
        time.sleep(5)


 

4、测试报告模块

import unittest
from Commons import path_config
import HTMLTestRunnerNew
from TestCases.test_login import TestApi
import logging
from Commons import logger
suite=unittest.TestSuite()
loader=unittest.TestLoader()

# file=open('report.html','wb+')
with open(path_config.report_dir,'wb+') as file:
suite.addTest(loader.loadTestsFromTestCase(TestApi))
runner=HTMLTestRunnerNew.HTMLTestRunner(stream=file, verbosity=2,title='linda测试接口报告',description='Python10_test',tester=None)
runner.run(suite)

 

以上只是做了一个简单的框架,可以加上日志、截图等模块

posted @ 2019-10-08 16:08  Linda~娟娟  阅读(1639)  评论(3编辑  收藏  举报