随便写点东西,有的是网上借鉴,有的是自己体会,总之都是根据自己的需求进行优化的一些东西,随笔备忘录
这个框架的思路是把元素与操作分开,页面元素与操作改变时,只需要修改定位的元素与对应的操作;操作流程修改时,只需要修改测试流程。
先在项目下pageobject文件夹下放所有要测试的页面类,用来写关于测试页面的元素定位和操作。在项目下testsuites文件夹下放所有页面对应的测试类,在下面新建.py文件,用来编写测试页面的测试代码
wms_all_methods.py中记录所有wms页面的元素以及对应的操作
登录名和密码取自配置文件,如果有变动,直接修改配置文件就可以;
随机生成的项目名称需要写入配置文件,之后的操作需要调用此名称
进行元素定位,id定位这里就不说了,其他的定位方法,个人还是比较推荐css
# -*- encoding: utf-8 -*-
import random
import functools
from framework.Base_Page import BasePage
class WmsAllmethods(BasePage):
n = functools.reduce(lambda x, y: 10 * x + y, [random.randint(1, 9) for x in range(18)])
t = functools.reduce(lambda x, y: 10 * x + y, [random.randint(1, 9) for y in range(5)])
accountName = ['id','accountName']#输入用户名
passWord = ['id','passWord']#密码
submit = ['css','button[type="submit"]']#登录
tongyi = ['css', 'button[class="ant-btn ant-btn-primary"]'] # 同意
product = ['id', 'productSeries'] # 产品系列
xmgl = ['xpath','//*[@id="root"]/div/section/section/aside/div[1]/ul/li[2]/div']#项目管理
projectName = ['id','projectName']#项目名称输入框
trustManager = ['id','trustManager']#项目经理
operationManager = ['id','operationManager']#运营经理
submission = ['css','button[type="submit"]']#提交按钮
def click_submission(self):#点击提交
self.click(self.submission)
self.my_sleep(2)
def click_operationManager(self):#点击运营经理
self.click(self.operationManager)
def click_trustManager(self):#点击项目经理
self.click(self.trustManager)
def type_projectName(self,va):#项目名称输入框
value = str(self.t) + va
self.type(self.projectName,value)
self.config_write('ment', 'ject', value)
def click_xmgl(self):#点击项目管理
self.click(self.xmgl)
self.my_sleep(2)
def click_product(self):#点击产品系列
self.click(self.product)
def click_tongyi(self):#点击同意
self.click(self.tongyi)
self.my_sleep(2)
def click_submit(self):
self.click(self.submit)
def type_passWord(self,va):
password = self.config_get(va,'password')
self.type(self.passWord,password)
def type_accountName(self,va):
name = self.config_get(va, 'name')
self.type(self.accountName,name)
def my_quit(self):
self.my_quite()
testsuites文件夹下放所有页面对应的测试类,在下面新建.py文件
这里可以根据需求设计案例了
例(1):
# -*- encoding: utf-8 -*-
import unittest
from framework.Base_Page import BasePage
from pageobject.wms_all_methods import WmsAllmethods
class test_wms_kyc_sh(unittest.TestCase):
def setUp(self) -> None:
bro = BasePage(self)
self.driver = bro.open_browser('wms')
def test_kyc_sh(self):
'''审核'''
dr = WmsAllmethods(self.driver)
dr.type_accountName('cfzjl')
dr.type_passWord('pw')
dr.click_submit()
dr.click_htgl()
dr.click_shenh()
dr.click_sh()
dr.click_tongyi()
dr.my_quit()
if __name__ == '__main__':
unittest.main()
例(2):
# -*- encoding: utf-8 -*-
import unittest
from framework.Base_Page import BasePage
from pageobject.wms_all_methods import WmsAllmethods
from framework.keyboard import keybd_event
class test_wms_project_approval(unittest.TestCase):
def setUp(self) -> None:
bro = BasePage(self)
self.driver = bro.open_browser('wms')
def test_wms_project_approval(self):
'''项目立项'''
dr = WmsAllmethods(self.driver)
dr.type_accountName('xtjl')
dr.type_passWord('pw')
dr.click_submit()
dr.click_htgl()
dr.click_xmgl()
dr.click_xmlx()
dr.click_edit()
dr.type_projectName('自动化项目')
dr.click_trustManager()
keybd_event(40)
keybd_event(13)
dr.click_operationManager()
keybd_event(13)
dr.type_Profit(9)
dr.click_submission()
dr.my_quit()
if __name__ == '__main__':
unittest.main()
这里只是两个流程的操作,自动化测试为了避免一些外部的影响,像登录名密码之类的尽量使用专用的固定的,有些操作需要输入验证码的,尽量也不要校验