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

Posted

技术标签:

【中文标题】在移动原生应用程序测试中:使用 Appium 时如何模拟后端?【英文标题】:In Mobile Native App Testing: How to mock backend when using Appium? 【发布时间】:2015-07-15 00:53:00 【问题描述】:

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

考虑: - 我想要一个 UI 测试,它将在 iosandroid 应用程序上执行(Appium 应该是多平台的)

测试场景:

    按下 Native App 中的按钮。 Native App 将调用外部 API(需要模拟)。 原生应用显示一些文字。 断言。

问题:

如何模拟 API 调用?

Appium 使用已构建的项目(例如 apk)。在从 Appium 端构建之前,有什么方法可以集成和配置应用程序?例如如果 Appium 触发构建,则应用应使用虚假 API 响应 (JSON)。

【问题讨论】:

嘿@masoodg,你知道了吗? 没有。 Appium 的主要目的似乎是 e-2-e 测试,即没有 mock/stub。 【参考方案1】:

据我所知,Appium 不具备模拟任何 API 的能力,因为 appium 所做的只是查看屏幕并自动执行用户可以手动执行的操作,例如单击按钮等。

【讨论】:

【参考方案2】:

Appium 调用被测应用程序 (AUT) 并对其执行操作(如单击、按下、输入文本)。 如果 AUT 指向某个端点以获取响应,Appium 无法改变这一点。 虽然可以构建 AUT 以使用模拟端点。

创建一个本地模拟服务器并将其暴露在一个端口(例如:3000)上,并使用 ngrok 创建一个可公开访问的端点,然后构建您的应用程序以指向该端点。 mockserver 可以是一个混合模拟服务器,它可以模拟一些响应,其余的可以定向到真正的后端。

【讨论】:

【参考方案3】:

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

    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()
    

    attach_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('%s\n' % item)
        file.close()
    
    allure.attach.file(
        source=f'device_log.txt', name='device_log')
    

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

【讨论】:

以上是关于在移动原生应用程序测试中:使用 Appium 时如何模拟后端?的主要内容,如果未能解决你的问题,请参考以下文章

2020,6招玩转 Appium 自动化测试

Appium简介

appium工具使用

移动端自动化测试-WTF Appium?

移动端自动化测试-WTF Appium

1.appium介绍