下图为框架整体结构:
addnote1.csv文件,新增笔记测试脚本会读取到此文件内容:
配置文件config11.csv:
数据文件读取脚本csvreader.py:
import csv
import os
def reader(file):
# 2、指定csv文件所在的路径
base_path=os.getcwd() # 代表当前文件所在路径
path = base_path.replace(base_path,r"E:\ydy\test_data1"+file) # 置换成csv文件所在路径
# 3、打开这个csv文件
list=[]
with open(path) as file:
# 4、读取csv文件中的内容
table=csv.reader(file)
# 5、返回文件中的内容
for row in table:
list.append(row)
return list
BaseTest.py脚本:
import unittest2
from appium.webdriver.webdriver import WebDriver
class BaseTest(unittest2.TestCase):
def setUp(self):
self.caps={}
self.caps['automationName']='UiAutomator2'
self.caps["newCommandTimeout"] = "5000"
self.caps['platformName'] = 'Android'
self.caps["platformVersion"] = "6.0"
self.caps["deviceName"]="192.168.75.103:5555"
self.caps["appPackage"]="com.youdao.note"
self.caps["appActivity"]=".activity2.SplashActivity"
self.driver=WebDriver('http://127.0.0.1:4723/wd/hub',self.caps)
self.driver.implicitly_wait(10)
def tearDown(self):
self.driver.quit()
新增笔记测试脚本test_add.py:
#新增笔记测试
import ddt
import unittest2
from test_case1.BaseTest import BaseTest
from func1.csvreader import reader
from selenium.webdriver.support.wait import WebDriverWait
@ddt.ddt
class add_test(BaseTest):
table=reader(r"\addnote1.csv")
@ddt.data(*table)
def test_case1(self,row):
self.driver.implicitly_wait(10)
aa=WebDriverWait(self.driver,15).until(lambda x: x.find_element_by_id("com.youdao.note:id/btn_ok"))
if aa:
# 点击同意按钮
self.driver.find_element_by_id("com.youdao.note:id/btn_ok").click()
#点击取消按钮
self.driver.find_element_by_id("com.youdao.note:id/btn_cancel").click()
#点击新增按钮
self.driver.find_element_by_id("com.youdao.note:id/add_note").click()
#点击新建笔记
self.driver.find_element_by_id("com.youdao.note:id/add_icon").click()
#点击“ALLOW"按钮
self.driver.find_element_by_id("com.android.packageinstaller:id/permission_allow_button").click()
#输入内容
self.driver.find_element_by_xpath("//*[@resource-id='com.youdao.note:id/note_content']/android.widget.EditText").send_keys(row[1])
#输入标题
self.driver.find_element_by_id("com.youdao.note:id/note_title").send_keys(row[0])
#点击"完成"按钮
self.driver.find_element_by_id("com.youdao.note:id/actionbar_complete_text").click()
#获取新增成功后的标题内容
result=self.driver.find_element_by_id("com.youdao.note:id/title").text
#断言判断
self.assertEqual(row[0],result)
驱动程序run.py:
import csv
import unittest2
from lib.HTMLTestRunner import HTMLTestRunner
if __name__ == '__main__':
# 打开对应的配置文件,进行读取
file=open(r"E:\ydy\config1\config11.csv","r")
table=csv.reader(file)
for row in table:
if row[2]=="yes":
route=row[0]
fname=row[1]
suite=unittest2.defaultTestLoader.discover(route,fname)
path=r"E:\ydy\report1\\"+row[3]
file=open(path,"wb")
HTMLTestRunner(stream=file,verbosity=1,title="有道云测试报告",description=row[4],tester="小米").run(suite)
file.close()
当只需要运行新增笔记测试脚本test_add.py时,在配置文件中把下列其他脚本的yes改成no,然后运行run.py:
运行完成后,会在驱动程序中指定位置生成html格式的测试报告: