我想在运行本地android模拟器的Appium服务器实例上运行用jocha编写的e2e测试。测试中的应用程序是最初用react-native编写的apk。
在Windows上我通过使用Appium桌面应用程序启动并运行Android Studio模拟器。服务器都看起来不错,并有我想测试工作正常的本机应用程序的apk。我还有一个用mocha编写的基本describe / assert测试,我想将其应用到app。
我的问题是我需要包含什么(可能在测试文件中)才能使测试实际测试模拟器应用程序?我发现文档非常混乱,示例代码似乎非常特定于不同的用例。
非常感谢你的帮助!
答案 0 :(得分:0)
至少有2个优秀的js客户端库可用于基于Appium的项目:webdriverio和wd。就个人而言,我使用第二个,所以我可以建议你如何使用它和mocha进行测试: 我的测试文件如下所示:
'use strict'
require(path.resolve('hooks', 'hooks'))
describe('Suite name', function () {
before('Start new auction', async function () {
//do before all the tests in this file, e.g. generate test data
})
after('Cancel auction', async function () {
//do after all the tests in this file, e.g. remove test data
})
it('test1', async () => {
// test steps and checks are here
})
it('test2', async () => {
// test steps and checks are here
})
it('test3', async () => {
// test steps and checks are here
})
})
其中 hooks.js 包含所有测试的全局之前/之后:
const hooks = {}
before(async () => {
// before all the tests, e.g. start Appium session
})
after(async () => {
// after all the tests, e.g. close session
})
beforeEach(async () => {
// before each test, e.g. restart app
})
afterEach(async function () {
// e.g. take screenshot if test failed
})
module.exports = hooks
我并不是说它是设计测试的最佳实践,而是它的多种方式之一。
答案 1 :(得分:0)
酷,所以我设法让它在一定程度上工作。当我试图运行东西时,我正在检查Appium控制台日志,并注意到我的请求中缺少会话ID。所需要的只是使用会话ID附加驱动程序。我的代码看起来有点像这样:
"use strict";
var wd = require("wd")
var assert = require("assert")
var serverConfig = {
host: "localhost",
port: 4723,
}
var driver = wd.remote(serverConfig)
driver.attach("0864a299-dd7a-4b2d-b3a0-e66226817761", function() {
it("should be true", function() {
const action = new wd.TouchAction()
action
.press({x: 210, y: 130})
.wait(3000)
.release()
driver.performTouchAction(action)
assert.equal(true, true)
})
})
equals true assert就在那里作为占位符健全性检查。目前唯一的问题是,每次重新启动Appium服务器时,我都会在attach方法中复制粘贴字母数字会话ID,因此我需要找到一种自动化方法。