El primer marco de prueba automatizado de Appium

Marco de prueba:

Marco de código específico:

A continuación se muestra la escritura del código de cada parte a su vez:

en el autobús/prueba de inicio de sesión:

import time
from selenium.webdriver.common.by import By

from config.commen import caps


def login_test(username,password):
    driver=caps()
    driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/launch_rect_skip").click()
    # driver.find_element_by_id("com.to8to.housekeeper:id/launch_rect_skip").click()
    time.sleep(2)
    #选择我的
    # driver.find_element(by=By.CLASS_NAME,value='android.widget.ImageView').click()
    # son='resourceId("com.to8to.housekeeper:id/ttab_own").childSelector(className("android.widget.ImageView"))'
    # driver.find_element_by_android_uiautomator(son).click()
    #最后选择Xpath定位到的 x=955   y=2099
    # driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.view.ViewGroup[5]/android.widget.ImageView").click()
    driver.tap(955,2099)
    #选择立即登录
    driver.find_element(by=By.CLASS_NAME,value="android.widget.TextView").click()
    # driver.find_element_by_class_name("android.widget.TextView").click()
    # #删除手机号
    # driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/module_login_img_reset_account").click()
    # #输入手机号
    # driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/module_login_edit_account").send_keys("15736418790")
    # #获取验证码
    # driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/module_login_txt_countdown").click()
    #点击密码登录
    # driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/module_login_txt_changed_login").click()
    time.sleep(1)
    #输入手机号
    driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/module_login_edit_account").send_keys(username)
    #输入密码
    driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/module_login_edit_password").send_keys(password)
    #勾选协议
    driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/module_login_cb_left").click()
    #点击登录
    driver.find_element(by=By.ID,value="com.to8to.housekeeper:id/module_login_btn_commit").click()
    try:
        driver.find_element_by_xpath('//*[contains(@text,"个人主页")]')
    except:
        print("登录失败")
        return False
    else:
        print("登录成功")
        return True
    # driver.quit()
if __name__ == '__main__':
    login_test("15736418790","test666#")

 config/comentario.py:

import os
from time import sleep

import yaml
from selenium.webdriver.common.by import By
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy

def caps():
    #获取配置文件的目录
    yaml_dir=os.path.dirname(__file__)#当前文件所在目录
    #获取配置文件的完整路径
    yaml_path=os.path.join(yaml_dir,'config.yaml')
    #打开配置文件,读取内容
    yaml_content=open(yaml_path,'r',encoding='utf-8')
    #解析配置文件的内容
    data= yaml.load(yaml_content,Loader=yaml.FullLoader)
    yaml_content.close()

    caps = {}
    # caps["platformName"] = data['platformName']
    # caps["platformVersion"] = data['platformVersion']
    # caps["deviceName"] = data['deviceName']
    caps["platformName"] = "Android"
    caps["appium:platformVersion"] = "10"
    caps["appium:deviceName"] = "e0383ead"
    caps["appPackage"] = "com.to8to.housekeeper"
    caps["appActivity"] = "com.to8to.housekeeper.TLaunchActivity"
    caps["noReset"] = True
    caps["ensureWebviewsHavePages"] = True
    caps["nativeWebScreenshot"] = True
    caps["anewCommandTimeout"] = 3600
    caps["connectHardwareKeyboard"] = True

    driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
    driver.implicitly_wait(6)
    return driver
if __name__ == '__main__':
    caps()

config/config.yaml:

platformName:Android
platformVersion:10
deviceName:e0383ead

datos/login_data.csv:

15736418790,test666#,True
1573641879,test666#,False
15736418790,test666,False
15736418792,test666,False

datos/get-csv:


def get_csv_all(csv_file):
    with open(csv_file,'r',encoding='utf-8')as f:
        lines=f.readlines()
        print(lines)
    return lines
if __name__ == '__main__':
    get_csv_all('./login.data.csv')

informe Ver informe: clic derecho

  testcase/login_test.py:

import unittest

from bussis.login_test import login_test
from data.get_csv import get_csv_all


class Testlogin(unittest.TestCase):
    #测试开始前执行
    def setUp(self):
        print("开始测试")
    #测试开始后执行
    def tearDown(self):
        print("结束测试")
    def test_login(self):
        #获取文件的路径
        csv_file='../data/login.data.csv'
        #读取文件内容
        data=get_csv_all(csv_file)
        for i in range(len(data)):#数据驱动,直接取data的长度去进行循环
            data1=data[i].split(',')#讲一组数据用逗号分隔成多组数据
        try:
            if data1[2].strip()=='true':
                self.assertTrue(login_test(data1[0],data1[1]))
                #strip函数去除后面的特殊字符,本文中去除\n
            else:
                self.assertFalse(login_test(data1[0],data1[1]))

        except:
            print("本次测试未通过")
        else:
            print("本次测试通过")
if __name__ == '__main__':
    Testlogin()

ejecutar/BSTestRunner.py:

下载地址:GitHub - easonhan007/HTMLTestRunner: BSTestRunner es una extensión del módulo unittest de la biblioteca estándar de Python. Genera informes de prueba HTML fáciles de usar.

 Después de descargar, copie el archivo BSTestRunner.py en pycharm

 ejecutar/corredor.py:

import time
import unittest

from run.BSTestRunner import BSTestRunner


def runner():
    #指定测试用例的目录
    testcase_dir='../testcase'
    #指定测试报告的目录
    report_dir='../report'
    #给测试报告命名
    now=time.strftime('%Y-%m-%d %H-%M-%S')
    report_name=report_dir+'/'+now+'_test_report.html'
    #筛选要执行的测试用例
    testcase=unittest.defaultTestLoader.discover(testcase_dir,pattern='*_test.py')
    #执行用例,生成报告
    with open(report_name,'wb')as f:
        runner=BSTestRunner(stream=f,title='我的测试报告',description='to8to_app')
        runner.run(testcase)

if __name__ == '__main__':
    runner()

Supongo que te gusta

Origin blog.csdn.net/cxxc980322/article/details/130492798
Recomendado
Clasificación