django-seleniumを使用して、Selenium テスト機能を既存の単体テストに追加しています。
私の Selenium テストは、私のマシンで実行されている Web サーバーに依存しており、django アプリをこのように実行するとトリガーされます。main.py -a
したがって、Selenium テストで最初にやりたいことは、このようにセットアップしたこのサーバーを起動することです。
def start_server():
path = os.path.join(os.getcwd(), 'main.py -a')
server_running = is_server_running()
if server_running is False:
server = subprocess.Popen('cmd.exe', stdin= subprocess.PIPE, stdout= subprocess.PIPE)
stdout, stderr = server.communicate(input='%s\n' % path)
print 'Server error:\n{0}\n'.format(stderr)
server_running = is_server_running()
return server_running
ただし、これを行うと、Webサーバーがコマンドラインでdjangoテストプロセスの実行を引き継ぎます。これを行うべき方法は、別のプロセスでコマンドプロンプトを起動し、main.py -a
そのプロセスでコマンドをトリガーすることだと思います。
これは正しい考えですか?もしそうなら、その関数を変更して新しいプロセスを生成し、コマンドを起動するにはどうすればよいですか? を使用して「cmd.exe」を実行しようとしましたが、動作させるProcess(target=path
ことができませんでした。ありがとう :)