2012-05-04 5 views
1

私はPython/Lettuceに裏打ちされたトップレベルのGherkinインターフェイスを持つテストフレームワークを構築しています。我々は、継続的な統合インフラストラクチャ(Hudson)にそれを組み込みたいだけでなく、あらゆる環境(dev-int、qa-int、stageなど)で同じテストを簡単に実行できるようにしたいと考えています。コマンドラインでのテストに至るまでのパラメータを渡すことはできませんので、私が考えてきたアプローチがある:レタステストスイートを起動するときの環境を制御するメソッド

ハドソン仕事を動的に設定ファイルを作成します

  1. サブジョブ所望の試験環境に基づいて ランテスト
  2. サブジョブがランナー・マシン上のレタスをキックオフし、地形ファイルは、次に
  3. サブジョブがCを削除し、正しい環境に対してテストを実行するために、動的設定から 値をピックアップ機械onfigファイル

これはうまくいくが、私にとってはハックのようだ。私は周りにグーグルで行ってきましたが、レタスを書いた人でも設定が必要ではないと思っているようですが、それを望むならば、環境変数をテストの外に設定して地形から読み取るだけです。レタスのリエンジニアリングがコマンドライン引数を渡すことができないほど短く、誰もこの目標を達成するための他の方法を考えることができますか?

+0

組み込みの 'lettuce'コマンドラインインタフェースを使用することは何もありません。独自のRunnerクラスや 'lettuce_cli.py'を難なく書き換えることができます。 –

+0

ハドソンを使用するか、[Jenkins](http://jenkins-ci.org/)を代わりに使用する必要がありますか?後者の場合は、[EnvInject plugin](https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin)と組み合わせてMatrixビルドを使用します。私は実際にジェンキンスを使用することが選択肢であるかどうかを精緻化することができます。 –

+0

@malenkiy_scotいいえ、私たちはハドソンを持っています...今のところ少なくとも今のところ、上に概説した方法を使っています。私はもっ​​と良い解決策を持っていればいいと思っています... –

答えて

0

どのレタスが元気だったのかよく分かりませんが、オブジェクト(outlined here)があります。著者は、これは少し非Python的であることを認めているが、あなたはこのような何か行うことができます。

from lettuce import Runner, world 

runner = Runner('path/to/tests', verbosity=4) 
world.VAR_NAME = VALUE 
result = runner.run() 

そして、あなたがそうのような世界の値にアクセスすることができますterrain.pyファイル内:

from lettuce import step, world 

@step('step definition') 
def function my_step(step): 
    print world.VAR_NAME 

これらの世界を変数はこのテストスイートの期間中利用可能ですので、あなたの世界に入れた情報の量に気をつけてください

+0

とにかくレタスから離れましたが、これは本当に欠けています。要点はテストコードとは別にテスト環境を設定することです。つまり、 'world'という擬似グローバル名前空間に値の束を詰め込んでも実際には問題は解決されません。また、擬似グローバル名前空間はちょうど悪いです。ひどい。 –

関連する問題