2017-01-05 17 views
0

フィーダからのデータがセッションに追加されないように見える問題があります。ユーザーが役割を持つシステム(つまりユーザーまたは管理者)をテストしており、役割に応じてさまざまなテストを実行する必要があります。高度なチュートリアルの後、私は自分のチェーンを別々のオブジェクト(各オブジェクトはそれぞれ独自のファイル)に分割しました。オブジェクトの1つには、ユーザーロールに関係なく同じログインプロシージャが含まれています。私はこれをもう一度使うのではなく、異なるフィーダーを使っています。フィーダからのデータがシナリオで利用できません

csvフィーダーを使用してユーザー名とパスワードを読み込みますが、シミュレーション実行時にFailed to build request Submit user/password: No attribute named 'password' is definedが表示されるため、セッションにデータを追加できないようです。ここで

は、複数のファイルに分割された私のコードです:今、CSVファイルがあるために

Simulation.scala

import io.gatling.core.Predef._ 
import io.gatling.http.Predef._ 

class Simulation extends Simulation { 
    val httpProtocol = http 
    .baseURL("baseURI") 

    val admins = scenario("Admins") 
    .feed(csv("admins.csv")) 
    .exec(Login.login) 
    .exec(TaskA.taskA) 

    val users = scenario("Users") 
    .feed(csv("users.csv")) 
    .exec(
    Login.login, 
    TaskB.taskB, 
    TaskC.taskC 
) 


    setUp(
    admins.inject(atOnceUsers(1))/*, 
    users.inject(atOnceUsers(1))*/ 
).protocols(httpProtocol) 
} 

Login.scala

object Login { 
    val login = group("Login") { 
    exec(http("Get form") 
    .get("/login/login.php") 
    .check(form("""form[name="relay"]""").saveAs("passwordForm"))) 
    .pause(10 seconds) 

    .exec(http("Submit user/password") 
    .post("/login/authenticate.php") 
    .form("${passwordForm}") 
    .formParam("pass", "${password}") //TODO: get from feeder 
    .formParam("user", "${username}") //TODO: get from feeder 
) 
} 
} 

同じ:

username,password 
user,user 

.feed(csv("admins.csv"))をLogin.scalaに移動すると不思議に思えますが、ユーザー用に再利用することはできません。

答えて

1

ソリューションは非常に簡単であることが判明した - このように、各シナリオにログインの異なるインスタンスを注入:

Login.scala

object Login { 
    def login(feeder: FeederBuilder[_]): ChainBuilder = { 
    feed(feeder) 
    ... 
    } 
} 

次にシミュレーション

シミュレーションに。スカラ

import io.gatling.core.Predef._ 
import io.gatling.http.Predef._ 

class Simulation extends Simulation { 
    val httpProtocol = http 
    .baseURL("baseURI") 

    val admins = scenario("Admins") 
    .exec(Login.login(csv("admins.csv"))) 
    .exec(TaskA.taskA) 

    val users = scenario("Users") 
    .exec(
    Login.login(csv("users.csv")), 
    TaskB.taskB, 
    TaskC.taskC 
) 


    setUp(
    admins.inject(atOnceUsers(1))/*, 
    users.inject(atOnceUsers(1))*/ 
).protocols(httpProtocol) 
} 
関連する問題