PyCon JP 2015に行ってプレゼンしてきた。
名前は『なぜWeb画面自動テストはうまく行かないのか』です
PyconなのにPythonの話ぜんぜんしてないけど、思いのほか反応よかったので、たぶん成功といえると思われる。
ついでに資料はここ
2015年10月13日火曜日
2015年9月30日水曜日
ブラウザテスト環境提供サービスの比較
世の中には便利なものがあって、最近はSeleniumでブラウザを起動するための環境を
手前で用意する必要は無い。
ネットワークの関係か、日本から動作させるといかんせん遅いような気もするが、
それでも十分なサービスが次の3つ。
各メリット、デメリットつきで記述する。
手前で用意する必要は無い。
ネットワークの関係か、日本から動作させるといかんせん遅いような気もするが、
それでも十分なサービスが次の3つ。
各メリット、デメリットつきで記述する。
- CrossBrowserTesting この3つのサービスのうち、一番安定して動作している気がする。ただし、起動できるブラウザの種類が少なく(Androidデフォルトブラウザのテストができない!)、ChromeやFireFoxの最新版も導入されるスピードが遅い。UIもシンプルだが低機能。ほかの2つと違って、テストのステータスを取得するAPIも存在しない。
- BrowserStack 最新ブラウザに 対応し、直感的でわかりやすいUI、APIを伴っている。チュートリアルもわかりやすい。ただしIPhoneやAndroidの動作がいかんせん不安定。
- SauceLabs 全てにおいて及第点。
2015年3月22日日曜日
requestsでurlに同一キーの複数パラメータを付与する方法
pythonのrequestsモジュールはこういうめんどくさい人たちに比べてかなり使い勝手がいい。
でもでも、urlのパラメータをdictで指定する(参考)ため、同一キーのパラメータは指定不可能
だと思っていた。
で、もやもやしている日曜の早朝に、
\ __ /
_ (m) _ ピコーン
|ミ|
/ `´ \
( ゚∀゚)
ノヽノ |
< <
ってなって、実際に試してみたら、出来たので、共有がてら。
結論から言うと、配列で渡せばいい。
例)
query = {
'hoge': 'hoge1',
'huga': ['huga1','huga2']
'fuge': True
}
r = requests.get('http://testhost/test.json', params=query)
orint r.url
>>u'http://testhost/test.json?hoge=hoge1&huga=huga1&huga=huga2&fuge=True
こんな感じ。
今あるソース全部書き換えたい。。。
でもでも、urlのパラメータをdictで指定する(参考)ため、同一キーのパラメータは指定不可能
だと思っていた。
で、もやもやしている日曜の早朝に、
\ __ /
_ (m) _ ピコーン
|ミ|
/ `´ \
( ゚∀゚)
ノヽノ |
< <
ってなって、実際に試してみたら、出来たので、共有がてら。
結論から言うと、配列で渡せばいい。
例)
query = {
'hoge': 'hoge1',
'huga': ['huga1','huga2']
'fuge': True
}
r = requests.get('http://testhost/test.json', params=query)
orint r.url
>>u'http://testhost/test.json?hoge=hoge1&huga=huga1&huga=huga2&fuge=True
こんな感じ。
今あるソース全部書き換えたい。。。
2015年2月13日金曜日
Pycharmが素敵すぎる件
Pycharmからnoseを使った単体テストを実行できるので、
日本語の情報がなかったので、備忘録として。
File→setting→tools→Python Integrated Tools→{対象プロジェクト}→Default test runner
ちなみにここからrequirements.txtの場所も指定できる。
また、他のプロジェクトのソースを参照したい場合は
File→setting→project→project Dependencies
から指定出来る
日本語の情報がなかったので、備忘録として。
File→setting→tools→Python Integrated Tools→{対象プロジェクト}→Default test runner
ちなみにここからrequirements.txtの場所も指定できる。
また、他のプロジェクトのソースを参照したい場合は
File→setting→project→project Dependencies
から指定出来る
2015年1月12日月曜日
Pythonとスレッド
モジュールの速度改善を行うために、Pythonで行うthread処理について調べることになった。
どうやらJavaみたいにクラスを分割だけではなく、メソッド単位でスレッドかできるらしい。
同時に複数スレッドからlistにpushしたりpopしたりするものも、独自に作成する必要は無く、
いい感じにロックをかけてくれるものもあるらしい。
シンプルなものになるとこんな感じ。
Pythonって便利。
どうやらJavaみたいにクラスを分割だけではなく、メソッド単位でスレッドかできるらしい。
同時に複数スレッドからlistにpushしたりpopしたりするものも、独自に作成する必要は無く、
いい感じにロックをかけてくれるものもあるらしい。
シンプルなものになるとこんな感じ。
Pythonって便利。
2014年9月14日日曜日
boot2docker起動時のエラー
最近、仕事で仮想環境にかかわることが多い。
その時に詰まったことを共有する。
ここを参考にして、boot2dockerをインストールして起動すると、エラーが発生した。
error in run failed to get machine "boot2docker-vm": exec: "%VBOX_MSI_INSTALL_PATH%;C:\\Program Files\\Oracle\\VirtualBox\\VBoxManage.exe": file does not exist
error in run failed to initialize machine "boot2docker-vm": exec: "%VBOX_MSI_INSTALL_PATH%;C:\\Program Files\\Oracle\\VirtualBox\\VBoxManage.exe": file does not exist
結論から言うと、環境変数:VBOX_INSTALL_PATHを
"%VBOX_MSI_INSTALL_PATH%;C:\\Program Files\\Oracle\\VirtualBox\\VBoxManage.exe"
から
"%C:\\Program Files\\Oracle\\VirtualBox\\VBoxManage.exe"
に修正すると回避できた。
boot2dockerの中身を見てみたが、観光変数が『;』で区切られている場合の考慮がされていなかった。
まだまだ荒いところはあるけど、dockerっていいよね。
その時に詰まったことを共有する。
ここを参考にして、boot2dockerをインストールして起動すると、エラーが発生した。
error in run failed to get machine "boot2docker-vm": exec: "%VBOX_MSI_INSTALL_PATH%;C:\\Program Files\\Oracle\\VirtualBox\\VBoxManage.exe": file does not exist
error in run failed to initialize machine "boot2docker-vm": exec: "%VBOX_MSI_INSTALL_PATH%;C:\\Program Files\\Oracle\\VirtualBox\\VBoxManage.exe": file does not exist
結論から言うと、環境変数:VBOX_INSTALL_PATHを
"%VBOX_MSI_INSTALL_PATH%;C:\\Program Files\\Oracle\\VirtualBox\\VBoxManage.exe"
から
"%C:\\Program Files\\Oracle\\VirtualBox\\VBoxManage.exe"
に修正すると回避できた。
boot2dockerの中身を見てみたが、観光変数が『;』で区切られている場合の考慮がされていなかった。
まだまだ荒いところはあるけど、dockerっていいよね。
2014年3月6日木曜日
seleniumからブラウザを起動するときのオプション情報
1.キャッシュやクッキーをクリアした状態でIEを起動する方法(Ver.2.35から可能)
DesiredCapabilities ieCap = DesiredCapabilities.internetExplorer();
ieCap.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
WebDriver driver = new InternetExplorerDriver(ieCap);
こんな感じ
2.marionetteのFireFoxを起動する方法(Ver.2.34から可能)
System.setProperty("webdriver.firefox.marionette", "true");
WebDriver driver = new FirefoxDriver();
プロファイルやバイナリの設定が必要になることもあるが、そのあたりは
コンストラクタを変更すればいい。(詳細は過去ログ)
そもそもマリオネットモードのFireFox環境を構築するにはFireFoxのビルドも
しなくちゃいけないらしく、そっちのほうが大変なような気がする。
*そもそもmarionetteって何?って人はここが詳しい
ようは別筐体にインストールしたFireFoxをソケットでつないで動作させるモード。
DesiredCapabilities ieCap = DesiredCapabilities.internetExplorer();
ieCap.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
WebDriver driver = new InternetExplorerDriver(ieCap);
こんな感じ
2.marionetteのFireFoxを起動する方法(Ver.2.34から可能)
System.setProperty("webdriver.firefox.marionette", "true");
WebDriver driver = new FirefoxDriver();
プロファイルやバイナリの設定が必要になることもあるが、そのあたりは
コンストラクタを変更すればいい。(詳細は過去ログ)
そもそもマリオネットモードのFireFox環境を構築するにはFireFoxのビルドも
しなくちゃいけないらしく、そっちのほうが大変なような気がする。
*そもそもmarionetteって何?って人はここが詳しい
ようは別筐体にインストールしたFireFoxをソケットでつないで動作させるモード。
登録:
投稿 (Atom)