2017-11-27 30 views
0

ローカルアンドロイドエミュレータを実行しているAppiumサーバインスタンスでmochaを使用してjavascriptで書かれたe2eテストを実行したいとします。テスト上のアプリは、もともと反応ネイティブで書かれたapkです。ローカルappiumサーバでjavascript e2eテストを実行しています

Windowsでは、Appiumデスクトップアプリケーションを使用してAndroidスタジオエミュレータでサーバーを起動して実行しています。サーバーはすべて見栄えが良く、ネイティブアプリのapkを持っていて、うまく動作するかどうかテストしたい。私はまた、アプリケーションに適用したいモカに書かれた基本的な記述/アサートテストを持っています。

私の質問は、テストで実際にエミュレータアプリケーションをテストするためには(おそらくテストファイルに)含める必要がありますか?私はドキュメントがかなり混乱していることを発見しています。サンプルコードは、さまざまなユースケースに固有のようです。

ご協力いただきありがとうございます。

+0

あなたはどんなドキュメントを参照していますか? – user1207289

+0

私はappium.ioのものとgithubのサンプルコードを参照していました。 – Bytes

答えて

0

Appiumベースのプロジェクトに使用するクライアントライブラリは少なくとも2つあります(webdriverioおよびwd)。個人的に、私はので、私はそれとモカとテストを書くどのようにアドバイスすることができます秒1を使用しています: 私のテストファイルは次のようになります。

hooks.jsはすべてのための前/後のグローバル含まれてい
'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 
}) 
}) 

テスト:

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

と、エミュレートされたアプリケーションをホストするローカルサーバーで実際にこれらのテストをどのように指していますか? – Bytes

+0

コマンドラインからappiumサーバーを起動し、exports.local = { ホスト: 'localhost'、 ポート:4723 }でセッションを作成し、エミュレータに接続してplatformVersionを機能に指定しない場合は、それはデフォルトのものとして – dmle

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

これは本当のアサートと同じですが、プレースホルダーのサニティチェックとして存在します。この問題の唯一の問題は、Appiumサーバーを再起動するたびにattachメソッド内の英数字のセッションIDをコピーしているので、自動化する方法を見つける必要があることです。

関連する問題