您的位置:首页 > 科技 > IT业 > 如何搭建网上商城_html5开发手机网站_腾讯广点通广告投放平台_百度财报q3

如何搭建网上商城_html5开发手机网站_腾讯广点通广告投放平台_百度财报q3

2024/12/22 11:53:56 来源:https://blog.csdn.net/judahwang/article/details/142786776  浏览:    关键词:如何搭建网上商城_html5开发手机网站_腾讯广点通广告投放平台_百度财报q3
如何搭建网上商城_html5开发手机网站_腾讯广点通广告投放平台_百度财报q3

为了实现从Excel文件中读取手工测试用例,通过LangChain生成Prompt,最终自动生成App自动化测试代码,可以按照以下步骤进行设计和实现。

步骤概览

  1. 从Excel读取手工测试用例
  2. 使用LangChain生成Prompt并解析
  3. 自动生成Appium等框架的自动化测试代码
  4. 集成自动化测试代码到测试框架中

1. 从Excel读取手工测试用例

使用pandas库读取Excel文件中的手工测试用例,假设Excel文件结构如下:

用例名称前置条件测试步骤预期结果
登录功能测试应用已启动到登录页面1. 输入用户名\n2. 输入密码\n3. 点击登录按钮跳转到主页,登录成功
搜索功能测试应用已登录到首页1. 输入搜索关键字\n2. 点击搜索按钮显示搜索结果页面

可以通过以下代码读取并解析Excel文件:

import pandas as pd# 从Excel文件读取测试用例
def read_test_cases_from_excel(file_path):df = pd.read_excel(file_path)test_cases = []for index, row in df.iterrows():test_case = {"用例名称": row["用例名称"],"前置条件": row["前置条件"],"测试步骤": row["测试步骤"],"预期结果": row["预期结果"]}test_cases.append(test_case)return test_cases

2. 使用LangChain生成Prompt并解析

读取Excel中的测试用例后,使用LangChain生成Prompt,将自然语言的测试步骤和预期结果转换为自动化测试代码。

首先,生成Prompt:

# 生成LangChain使用的Prompt
def generate_prompt(test_case):prompt = f"""将以下手工测试用例转化为Appium的自动化测试代码:用例名称: {test_case['用例名称']}前置条件: {test_case['前置条件']}测试步骤: {test_case['测试步骤']}预期结果: {test_case['预期结果']}"""return prompt

然后,通过LangChain模型对Prompt进行处理,生成相应的自动化测试代码。

使用LangChain时,可以将Prompt传递给预训练模型或自定义模型,输出自动化测试代码。

from langchain.prompts import PromptTemplate
from langchain.llms import OpenAI# 使用LangChain处理Prompt并生成自动化测试代码
def generate_automation_code(prompt):# 使用LangChain调用 OpenAI 模型 (这里你可以选择不同的模型)llm = OpenAI(temperature=0)response = llm(prompt)return response

3. 自动生成Appium自动化测试代码

解析手工测试用例后,生成具体的Appium代码,例如在Python中:

# 自动生成的Appium代码示例
def generate_appium_test_code(test_case):prompt = generate_prompt(test_case)code = generate_automation_code(prompt)return code

生成的代码可以包括如下内容:

from appium import webdriverdef init_driver():desired_caps = {"platformName": "Android","deviceName": "emulator-5554","appPackage": "com.example.app","appActivity": ".LoginActivity"}driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)return driverdef login_test(driver):username_input = driver.find_element_by_id("com.example.app:id/username")username_input.send_keys("有效的用户名")password_input = driver.find_element_by_id("com.example.app:id/password")password_input.send_keys("有效的密码")login_button = driver.find_element_by_id("com.example.app:id/login_button")login_button.click()home_page = driver.find_element_by_id("com.example.app:id/home_page")assert home_page.is_displayed()if __name__ == "__main__":driver = init_driver()login_test(driver)driver.quit()

4. 自动化测试代码集成

生成的Appium自动化测试代码可以自动集成到项目的测试框架中。你可以通过以下方式将生成的代码写入Python文件,供持续集成工具使用。

# 将生成的测试代码写入文件
def write_code_to_file(code, file_name):with open(file_name, "w", encoding="utf-8") as f:f.write(code)# 示例
test_case = {"用例名称": "登录功能测试","前置条件": "应用已启动到登录页面","测试步骤": "1. 输入有效的用户名\n2. 输入有效的密码\n3. 点击登录按钮","预期结果": "用户成功登录,跳转到主页"
}code = generate_appium_test_code(test_case)
write_code_to_file(code, "test_login.py")

5. 实现整体流程

综合以上步骤,整个工具的工作流程如下:

  1. 从Excel读取测试用例
  2. 通过LangChain生成Prompt
  3. LangChain自动生成Appium的自动化测试代码
  4. 将生成的代码保存到文件中,供CI系统执行

最终,工具可以通过以下方式运行:

# 主程序:从Excel读取测试用例,生成自动化代码并保存到文件
def main():file_path = "test_cases.xlsx"test_cases = read_test_cases_from_excel(file_path)for i, test_case in enumerate(test_cases):code = generate_appium_test_code(test_case)file_name = f"test_case_{i+1}.py"write_code_to_file(code, file_name)if __name__ == "__main__":main()

6. 进一步扩展

  • 支持多平台:可以根据platformName字段动态生成iOS和Android的代码。
  • 操作类型扩展:可以处理更多类型的操作(如滑动、长按、拖拽)。
  • 测试结果报告:结合现有测试框架生成测试报告,如pytestunittest
  • 数据驱动测试:结合Excel的多行数据生成数据驱动测试用例。

通过这些步骤,手工测试用例从Excel中读取后,可以使用LangChain生成Prompt并自动生成Appium等测试框架的自动化代码,实现从手工用例到自动化测试的全流程工具

第6点的扩展是实现更高级的功能,包括多平台支持、操作类型扩展、生成测试报告和数据驱动测试用例。这将使工具更具灵活性和可扩展性。以下是每个功能的详细扩展实现。

6.1 支持多平台 (iOS 和 Android)

为了支持多平台(iOS 和 Android),我们可以在生成自动化测试代码时根据平台名称动态配置。desired_capabilities中的platformName字段将决定是否生成Android或iOS的代码。

from appium import webdriver# 初始化驱动器,根据平台生成不同的desired_capabilities
def init_driver(platform):if platform.lower() == "android":desired_caps = {"platformName": "Android","deviceName": "emulator-5554","appPackage": "com.example.app","appActivity": ".LoginActivity"}elif platform.lower() == "ios":desired_caps = {"platformName": "iOS","deviceName": "iPhone Simulator","app": "/path/to/your.app","platformVersion": "14.5","automationName": "XCUITest"}else:raise ValueError(f"Unsupported platform: {platform}")driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)return driver# 示例调用
driver = init_driver("android")
6.2 扩展操作类型(如滑动、长按、拖拽等)

在测试中,除了常见的输入和点击操作外,滑动、长按、拖拽等高级操作也是必需的。Appium中支持这些手势操作。

from appium.webdriver.common.touch_action import TouchAction# 生成滑动操作的函数
def swipe_action(driver, start_x, start_y, end_x, end_y, duration=800):action = TouchAction(driver)action.press(x=start_x, y=start_y).wait(ms=duration).move_to(x=end_x, y=end_y).release().perform()# 长按操作
def long_press_action(driver, element, duration=2000):action = TouchAction(driver)action.long_press(el=element, duration=duration).release().perform()# 拖拽操作
def drag_and_drop_action(driver, source_element, target_element):action = TouchAction(driver)action.long_press(source_element).move_to(target_element).release().perform()# 示例调用
element = driver.find_element_by_id("com.example.app:id/element")
long_press_action(driver, element)
6.3 生成测试报告

为了生成测试报告,可以使用unittestpytest等框架,并集成报告生成库如pytest-html,来生成详细的测试报告。

使用unittestHTMLTestRunner来生成报告:

import unittest
from appium import webdriver
from HTMLTestRunner import HTMLTestRunner  # HTMLTestRunner可生成HTML测试报告class AppiumTest(unittest.TestCase):def setUp(self):# 初始化Appiumself.driver = init_driver("android")def test_login(self):driver = self.driver# 这里是登录测试的逻辑username_input = driver.find_element_by_id("com.example.app:id/username")username_input.send_keys("有效的用户名")password_input = driver.find_element_by_id("com.example.app:id/password")password_input.send_keys("有效的密码")login_button = driver.find_element_by_id("com.example.app:id/login_button")login_button.click()# 断言主页是否显示home_page = driver.find_element_by_id("com.example.app:id/home_page")self.assertTrue(home_page.is_displayed())def tearDown(self):self.driver.quit()# 运行并生成HTML报告
if __name__ == "__main__":suite = unittest.TestLoader().loadTestsFromTestCase(AppiumTest)with open("report.html", "w") as f:runner = HTMLTestRunner(stream=f, title="Appium Test Report", description="Sample test report")runner.run(suite)

通过这种方式,测试完成后会生成一个report.html文件,里面包含详细的测试步骤和结果。

6.4 数据驱动测试

数据驱动测试可以通过从Excel或其他外部数据源中读取测试数据,动态执行多次测试。可以使用ddt库来实现数据驱动测试。

import unittest
from ddt import ddt, data, unpack
import pandas as pd# 从Excel中读取数据
def get_test_data_from_excel(file_path):df = pd.read_excel(file_path)data_list = df.values.tolist()  # 转换为列表return data_list# 使用ddt实现数据驱动测试
@ddt
class AppiumTest(unittest.TestCase):def setUp(self):self.driver = init_driver("android")# 使用ddt库实现数据驱动测试@data(*get_test_data_from_excel("test_data.xlsx"))@unpackdef test_login(self, username, password, expected):driver = self.driver# 执行输入和点击操作username_input = driver.find_element_by_id("com.example.app:id/username")username_input.send_keys(username)password_input = driver.find_element_by_id("com.example.app:id/password")password_input.send_keys(password)login_button = driver.find_element_by_id("com.example.app:id/login_button")login_button.click()# 检查结果home_page = driver.find_element_by_id("com.example.app:id/home_page")if expected == "success":self.assertTrue(home_page.is_displayed())else:error_message = driver.find_element_by_id("com.example.app:id/error_message")self.assertTrue(error_message.is_displayed())def tearDown(self):self.driver.quit()# 运行测试
if __name__ == "__main__":unittest.main()
6.5 自动化生成代码流程

将前面的扩展功能集成到主流程中,自动生成代码时可以根据输入决定生成哪些操作类型,并支持多平台测试。

# 自动生成的Appium代码示例,支持多平台和扩展操作
def generate_appium_test_code(test_case, platform="android"):prompt = generate_prompt(test_case)code = generate_automation_code(prompt)# 插入平台相关代码if platform.lower() == "android":code = code.replace("init_driver()", "init_driver('android')")elif platform.lower() == "ios":code = code.replace("init_driver()", "init_driver('ios')")return code
6.6 完整的自动化工具流程
def main():# 从Excel读取测试用例file_path = "test_cases.xlsx"test_cases = read_test_cases_from_excel(file_path)# 生成自动化代码并保存到文件for i, test_case in enumerate(test_cases):code = generate_appium_test_code(test_case, platform="android")file_name = f"test_case_{i+1}.py"write_code_to_file(code, file_name)# 可选: 集成到CI/CD中运行测试并生成报告

总结

通过这些扩展,工具不仅能支持Android和iOS平台,还能生成复杂的用户操作,并能够生成详细的测试报告和实现数据驱动测试。这让自动化测试工具更灵活、更强大,同时满足了更多实际测试场景的需求。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com