SlideShare a Scribd company logo
ユニットテストあれこれ 
2014/10/29 
岡山Python勉強会 
@k5_yamayama
自己紹介 
山手恵悟(やまやま) 
@k5_yamayama 
岡山の某DBメーカー勤務 
ユーザーCE→社内SE→企画開発→ 
→サーバー管理→営業に至る。 
(これってフルスタック…?)
コミュニティ 
Okayama Engineers Community(通称:OITEC) 
運営スタッフやってます。 
岡山Python勉強会(通称:おっPy) 
立ち上げスタッフ 
主催者のはずの“#た”が福山に戻っちゃった 
で現在は、ほぼ主催者状態。
はじめに 
前回までにDjangoのチュートリアルが終わった 
ので今回は、テスト(ユニットテスト)について 
お話をしようと思います。
注意事項 
本セッションは、やまやま個人が調査・検証した 
結果を発表するもので、間違いやこれにより損害 
が生じても一切責任を負いませんのでご了承くだ 
さい。
今日の目的とゴール 
 目的 
Pythonのテスト手法について知っても 
らう。 
 ゴール 
様々なユニットテスト手法を理解する。
主なテストの方法について 
 Pythonには、標準でテストを実施する方法が 
用意されています。 
主なテスト 
Unittest 
Nose 
Doctest 
今回は、上記のテストについて比較していこ 
うと思います。
対象のコード 
テスト元のメソッド 
def add_data(data): 
adddata = data + 1000 
return adddata
Unittest 
 Python標準で用意されているテスト方法 
 JunitのPython版 
 Assertメソッドにて比較を行う 
 テストメソッドの頭にはTestをつける 
 テスト対象のファイル名にはTest.pyとしな 
いこと
Unittest 
テストコード 
import unittest 
class TestSequenceFunctions(unittest.TestCase): 
def setUp(self): 
self.data = 10 
def test_adddata(self): 
# add data 
actual = method_sample.add_data(self.data) 
self.assertEqual(actual, 1010) 
if __name__ == '__main__': 
unittest.main() Assrtメソッドを使い比較処理を実 
施
Nose 
 Unittestの拡張モジュール 
 要インストール(SetupToolsで…) 
 C#でいうところのChainigAssertion 
 テストの内容を簡略化できる
nose 
さっきのコードをnoseでやると… 
from nose.tools import with_setup, raises 
from method_sample import add_data 
def test_add_data(): 
actual = add_data(0) 
assert actual == 1000 
def test_add_data2(): 
Assert.equalと同様の処理が簡 
素化 
されている 
a = 10 
actual = add_data(a) 
assert actual == 1010
doctest 
 メソッド内に記述した内容でチェックを行う 
機能 
 Docstring内にテスト内容を記述すると内容 
を解析してテストを行ってくれる 
 メソッドの簡易テスト的な意味あい(っぽい) 
 簡単な内容ならこれでOKかも… 
 コマンドライン引数を入れることで結果を表 
示させることが可能
doctest 
def add_data(data): 
"""add data of integer >= 0 
>>> add_data(1) 1001 
""" 
adddata = data + 1000 
return adddata 
if __name__ == "__main__": 
import doctest 
doctest.testmod() 
コメント内で処理を実行し、結 
果を比較している
まとめ 
 まずは基本的なテストの仕組みを理解するには 
unittestが有効 
 効率よく記入するには、noseを使って記述するほうが良 
さそう 
 Doctestは簡易テストとして使うべき 
 Docstringは、メソッドの説明+簡易テストを使い構 
築していくとライブラリコメントと動作の整合性がとり 
易い 
 各種コマンドラインで色々できるのでまずはやってみた 
ほうが良いと思います。
参考URL 
Unittest 
http://docs.python.jp/2/library/unittest.html 
Nose 
http://chocolapod.sakura.ne.jp/blog/entry/8 
0 
Doctest 
http://docs.python.jp/2/library/doctest.html
ご清聴ありがとうございまし 
た。

More Related Content

PPTX
Ipythonを使ってみよう
PPTX
使ってみようPTSV
PPTX
PPTX
Pythonでpdfをいじってみる
PDF
LT3「Python を使ってExcel ファイルの修正」
PPTX
210526 Power Automate Desktop Python
PPTX
ETロボコンのすすめ
Ipythonを使ってみよう
使ってみようPTSV
Pythonでpdfをいじってみる
LT3「Python を使ってExcel ファイルの修正」
210526 Power Automate Desktop Python
ETロボコンのすすめ

What's hot (20)

PDF
自律走行ロボットをプログラミングするということ ~ETロボコンの場合~
PDF
インターネット生放送を支える技術としくみ2015年版
PPTX
C#/Java & Linux で始める ET ロボコン(leJOS編)
KEY
20110804 hls research
PPTX
Javaにおけるネイティブコード連携の各種手法の紹介
PDF
2015/11/15 Javaでwebアプリケーション入門
PDF
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
PDF
C#/Java & Linux で始める ET ロボコン
PDF
Reading 1st dRuby
PDF
ギアと開発とわたし_AAA2015
PDF
yidev 第18回勉強会 「業務でSwiftで3ヶ月開発してきたので一旦振り返り」
PPTX
Stac2014 石川
PDF
エンタープライズシステムにおけるテスト ~STE研究交流会 参加者の視点から ~
PDF
Jasst14東北 事例発表 share
PDF
20181102_テスト管理を語る夕べ
PDF
SeasarCon 2009 White TDD
PDF
テスト自動化読書会 第3章 20150523
PDF
Azureを使って手軽にブラウザテストの自動化をはじめよう
PDF
Hello Java
PDF
2014/5/5 Flipped Classroom Workshop
自律走行ロボットをプログラミングするということ ~ETロボコンの場合~
インターネット生放送を支える技術としくみ2015年版
C#/Java & Linux で始める ET ロボコン(leJOS編)
20110804 hls research
Javaにおけるネイティブコード連携の各種手法の紹介
2015/11/15 Javaでwebアプリケーション入門
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
C#/Java & Linux で始める ET ロボコン
Reading 1st dRuby
ギアと開発とわたし_AAA2015
yidev 第18回勉強会 「業務でSwiftで3ヶ月開発してきたので一旦振り返り」
Stac2014 石川
エンタープライズシステムにおけるテスト ~STE研究交流会 参加者の視点から ~
Jasst14東北 事例発表 share
20181102_テスト管理を語る夕べ
SeasarCon 2009 White TDD
テスト自動化読書会 第3章 20150523
Azureを使って手軽にブラウザテストの自動化をはじめよう
Hello Java
2014/5/5 Flipped Classroom Workshop
Ad

Viewers also liked (12)

PPTX
Sphinxはじめの一歩
KEY
Python パッケージ構成
PDF
pythonワンライナーのすゝめ
PPTX
Pythonユーザのための構成管理入門 #pyconapac
PPTX
Pythonを中心としたチーム開発
PDF
pythonでオフィス快適化計画
PDF
Sphinxで社内勉強会(Git)の
資料を作ってみた
PDF
ドキュメントシステムはこれを使え2015年版
PPTX
OpenStack本番環境の作り方
PDF
ドキュメントを作りたくなってしまう魔法のツールSphinx
PDF
Gensim
PDF
10分でわかるPythonの開発環境
Sphinxはじめの一歩
Python パッケージ構成
pythonワンライナーのすゝめ
Pythonユーザのための構成管理入門 #pyconapac
Pythonを中心としたチーム開発
pythonでオフィス快適化計画
Sphinxで社内勉強会(Git)の
資料を作ってみた
ドキュメントシステムはこれを使え2015年版
OpenStack本番環境の作り方
ドキュメントを作りたくなってしまう魔法のツールSphinx
Gensim
10分でわかるPythonの開発環境
Ad

Similar to Pythonのユニットテスト (20)

KEY
スクラムプロジェクト準備(公開用) No.31
PDF
java-ja TDD 2nd
PDF
チケット管理システム大決戦第二弾
PPTX
「自動化...か、かっこいいタル」(憧れ)から始める自動化
KEY
Windowsにpythonをインストールしてみよう
PDF
Introduction
PDF
勉強会のフィードバックから得られた自動化への壁
PDF
【A-5】(招待LT)灘校パソコン研究部とは
PDF
SPI Japan 2012 「SEPG活動とアジャイルの親和性を考える」ポジショントーク用
PDF
Python & PyConJP 2014 Report
PDF
みんなのPython勉強会#111 LT資料 "AIとサステナビリティについて"
PPT
意外と知らないFilemakerの世界
PDF
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
PPTX
S13 t0 introduction
PDF
アジャイルコーチが現場で学んだプロダクトオーナーの実際と勘所 POの二番目に大事なことと
PDF
S15 t0 introduction
PDF
塹壕にいるすべての同朋へ
PDF
IT関係の認定試験と取得費用について
PDF
CVPR2019読み会 (Rethinking the Evaluation of Video Summaries)
スクラムプロジェクト準備(公開用) No.31
java-ja TDD 2nd
チケット管理システム大決戦第二弾
「自動化...か、かっこいいタル」(憧れ)から始める自動化
Windowsにpythonをインストールしてみよう
Introduction
勉強会のフィードバックから得られた自動化への壁
【A-5】(招待LT)灘校パソコン研究部とは
SPI Japan 2012 「SEPG活動とアジャイルの親和性を考える」ポジショントーク用
Python & PyConJP 2014 Report
みんなのPython勉強会#111 LT資料 "AIとサステナビリティについて"
意外と知らないFilemakerの世界
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
S13 t0 introduction
アジャイルコーチが現場で学んだプロダクトオーナーの実際と勘所 POの二番目に大事なことと
S15 t0 introduction
塹壕にいるすべての同朋へ
IT関係の認定試験と取得費用について
CVPR2019読み会 (Rethinking the Evaluation of Video Summaries)

Pythonのユニットテスト