在移动本机应用程序测试中:使用Appium时如何模拟后端



我们正在评估应用程序测试工具,Appium是我们的候选人,但是我找不到一个好的解决方案,如何在使用Appium时如何模拟后端?

考虑: - 我想进行一个单个UI测试,该测试将在iOS和Android应用程序上执行(Appium假设是乘法图)

  • 测试方案:

    1. 按下本机应用中的按钮。
    2. 本机应用将调用外部API(需要嘲笑)。
    3. 本机应用显示一些文本。
    4. 断言。

问题:

  • 如何模拟API调用?

  • Appium使用构建项目(例如APK)。是否有任何方法可以在Appium端构建之前整合和配置应用程序?例如如果Appium触发了构建,则该应用应使用假API响应(JSONS)。

据我所知,Appium没有能力模拟任何API,因为所有Appium都可以查看屏幕并自动化用户可以手动做的事情,例如单击按钮等。

appium调用正在测试的应用程序(aut)并在其上执行操作(例如单击,按,输入文本)。如果在某个端点处的AUT点获得响应,则Appium无法改变。尽管可以构建AUT以消耗模拟端点。

创建本地模拟服务器并将其公开在端口(例如:3000)上,并使用Ngrok创建一个公开访问的端点,然后构建您的应用程序以指向此端点。模拟服务器可以是混合模拟服务器,可以模拟一些响应,其余的可以直接用于真实的后端。

从设备日志获取一些信息的其他方法。在我的项目中,iOS应用程序开发人员由于安全性而隐藏了所有信息,但是在Android应用程序中,我可以阅读日志数据。这是我可以保存设备日志的地方。

  1. conftest.py

    @pytest.fixture
    def appdriver():
    driver = config.get_driver_caps()
    if config.IS_IOS:
        driver.start_recording_screen(videoQuality='high', videoType='mpeg4', videoFps='24')
    else:
        driver.start_recording_screen()
    yield driver
    attach_device_log(driver)
    save_video(driver)
    driver.quit()
    
  2. satch_device_log()

    def attach_device_log(appdriver):
    if config.IS_ANDROID:
        device_logs = appdriver.get_log('logcat')
    else:
        device_logs = appdriver.get_log('syslog')
    os.path.dirname(os.path.abspath('/tests/'))
    with open('device_log.txt', 'w') as file:
        file.write('')
        for item in device_logs:
            file.write('%sn' % item)
        file.close()
    allure.attach.file(
        source=f'device_log.txt', name='device_log')
    

在我的示例中,我仅获得报告的日志。您可以根据需要在测试和解析数据期间获取日志。

最新更新