SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
datetime.datetime.now()を
モックしたい
ねもっち
はんなりPython #52 ゆるいLT会
おまえだれよ
根本 優太(ねもっち)
株式会社マイクロアド で データエンジニア してます
バッチプログラムの実装でPythonを使っています
はんなりPython #52 ゆるいLT会
@nemotche
https://www.linkedin.com/in/yutanemoto/
https://github.com/suzanagi
テストしてる?
はんなりPython #52 ゆるいLT会
単体テスト
(Unit Test)
結合テスト
(Integration Test)
システム
テスト
テストピラミッド
はんなりPython #52 ゆるいLT会
単体テスト
(Unit Test)
結合テスト
(Integration Test)
システム
テスト
テストピラミッド
実装コスト 低
実装量 大
はんなりPython #52 ゆるいLT会
ユニットテスト
def is_prime(num: int) -> bool:
"""
素数かどうか判定する
"""
if num < 2:
return False
i = 2
while i * i < num:
if num % i == 0:
return False
i = i + 1
return True
はんなりPython #52 ゆるいLT会
ユニットテスト
class TestSomeFunction(unittest.TestCase):
def test_is_prime_01(self):
# 1は素数じゃない
result: bool = is_prime(1)
self.assertFalse(result)
def test_is_prime_02(self):
# 2は素数
result: bool = is_prime(2)
self.assertTrue(result)
def test_is_prime_53(self):
# 57は素数
result: bool = is_prime(53)
self.assertTrue(result)
def is_prime(num: int) -> bool:
"""
素数かどうか判定する
"""
if num < 2:
return False
i = 2
while i * i < num:
if num % i == 0:
return False
i = i + 1
return True
コードが間違ってたら
コードが正しかったら
$ python3 -m unittest discover test
..F
======================================================================
FAIL: test_is_prime_53 (test_some_function.TestSomeFunction)
----------------------------------------------------------------------
Traceback (most recent call last):
File "**********/test/test_some_function.py", line 26, in test_is_prime_53
self.assertTrue(result)
AssertionError: False is not true
----------------------------------------------------------------------
Ran 3 tests in 0.004s
FAILED (failures=1)
$ python3 -m unittest discover test
...
----------------------------------------------------------------------
Ran 3 tests in 0.001s
OK
$
モックテスト
def is_prime(num: int) -> bool:
"""
素数かどうか判定する
"""
if num < 2:
return False
i = 2
while i * i < num:
if num % i == 0:
return False
i = i + 1
return True
def is_prime(num: int) -> bool:
"""
素数かどうか判定する
"""
if is_less_than_2(num):
# 2未満なら素数じゃない
return False
if is_divisible(num):
# 割り切れたら素数じゃない
return False
return True
別関数に切り出してみた
モックテスト
def is_prime(num: int) -> bool:
"""
素数かどうか判定する
"""
if is_less_than_2(num):
# 2未満なら素数じゃない
return False
if is_divisible(num):
# 割り切れたら素数じゃない
return False
return True
def test_is_prime_53(self):
# 57は素数
with patch('some_function.is_less_than_2', return_value=False), 
patch('some_function.is_divisible', return_value=False):
result: bool = is_prime(53)
self.assertTrue(result)
はんなりPython #52 ゆるいLT会
しかし、モックできない関数が…
はんなりPython #52 ゆるいLT会
datetime.datetime.now()
はんなりPython #52 ゆるいLT会
def print_datetime() -> None:
# システム日時を取得
dt_now = datetime.datetime.now()
print(dt_now)
>>> print_datetime()
2022-10-20 01:54:07.109558
>>>
関数
実装例
はんなりPython #52 ゆるいLT会
python3 -m unittest discover test
....E
======================================================================
ERROR: test_print_datetime (test_some_function.TestSomeFunction)
Traceback (most recent call last):
File "********************/test/test_some_function.py", line 33, in test_print_datetime
with patch('datetime.datetime.now', return_value='2022-01-01 00:00:00.100001'):
…
TypeError: can't set attributes of built-in/extension type 'datetime.datetime'
Ran 5 tests in 0.005s
FAILED (errors=1)
def test_print_datetime(self):
with patch('datetime.datetime.now', return_value='2022-01-01 00:00:00.100001'):
some_function.print_datetime()
方法1. pytestのmonkeypatchを使う
def test_print_datetime(monkeypatch):
datetime_mock = MagicMock(wraps=datetime.datetime)
datetime_mock.now.return_value = datetime.datetime(2022, 1, 1, 12, 59, 59, 100001)
monkeypatch.setattr(datetime, "datetime", datetime_mock)
some_function.print_datetime()
$ pytest -s test_some_function.py
===================================== test session starts =
platform darwin -- Python 3.8.0, pytest-7.1.3, pluggy-1.0.0
rootdir: /Users/shiranui/Development/TestUnitTest
collected 1 item
test_some_function.py 2022-01-01 12:59:59.100001
.
====================================== 1 passed in 0.09s ==
方法2. time-machine を使う
import time_machine
def test_print_datetime(self):
with time_machine.travel(datetime.datetime(2022, 1, 1, 23, 59, 59, 100001, tzinfo='')):
some_function.print_datetime()
$ python3 -m unittest discover test
2022-01-02 08:59:59.100001
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
$
方法3. ラッパー関数をつくる
def print_datetime() -> None:
# システム日時を取得
dt_now = get_current_datetime()
print(dt_now)
def get_current_datetime() -> datetime.datetime:
return datetime.datetime.now()
def print_datetime() -> None:
# システム日時を取得
dt_now = datetime.datetime.now()
print(dt_now)
datetime.datetime.now()だけ返す
関数を定義
方法3. ラッパー関数をつくる
def print_datetime() -> None:
# システム日時を取得
dt_now = get_current_datetime()
print(dt_now)
def get_current_datetime() -> datetime.datetime:
return datetime.datetime.now()
def test_print_datetime(self):
with patch('some_function.get_current_datetime', 
return_value=datetime.datetime(2022, 1, 1, 23, 59, 59, 100001)):
some_function.print_datetime()
テストコード
方法4. 依存性を注入できる設計にする
def print_datetime(get_current_datetime = datetime.datetime.now) -> None:
# システム日時を取得
dt_now = get_current_datetime()
print(dt_now)
def test_print_datetime(self):
some_function.print_datetime(lambda: datetime.datetime(2022, 1, 1, 23, 59,
59))
テストコード
まとめ
はんなりPython #52 ゆるいLT会
datetime.datetime.now()をモックする方法
1. pytestでテストを記述する
○ monkeypatchでモック化が容易
○ テストツールを移行する必要あり
2. time-machineライブラリを使う
○ Python標準のユニットテストでも利用可
能
○ 追加でライブラリをインストールする必要
あり
はんなりPython #52 ゆるいLT会
3. ラッパー関数を作って間接的に
モックする
○ 責務を明示的に分離できる
○ 関数呼び出しを行うコストがかかる
4. 関数を依存性注入できる設計で
作る
○ 実装への変更が小さい
○ インターフェースが複雑化
datetime.datetime.now()をモックする方法
1. pytestでテストを記述する
○ monkeypatchでモック化が容易
○ テストツールを移行する必要あり
2. time-machineライブラリを使う
○ Python標準のユニットテストでも利用可
能
○ 追加でライブラリをインストールする必要
あり
はんなりPython #52 ゆるいLT会
3. ラッパー関数を作って間接的に
モックする
○ 責務を明示的に分離できる
○ 関数呼び出しを行うコストがかかる
4. 関数を依存性注入できる設計で
作る
○ 実装への変更が小さい
○ インターフェースが複雑化
datetime.datetime.now()をモックする方法
1. pytestでテストを記述する
○ monkeypatchでモック化が容易
○ テストツールを移行する必要あり
2. time-machineライブラリを使う
○ Python標準のユニットテストでも利用可
能
○ 追加でライブラリをインストールする必要
あり
はんなりPython #52 ゆるいLT会
3. ラッパー関数を作って間接的に
モックする
○ 責務を明示的に分離できる
○ 関数呼び出しを行うコストがかかる
4. 関数を依存性注入できる設計で
作る
○ 実装への変更が小さい
○ インターフェースが複雑化
datetime.datetime.now()をモックする方法
1. pytestでテストを記述する
○ monkeypatchでモック化が容易
○ テストツールを移行する必要あり
2. time-machineライブラリを使う
○ Python標準のユニットテストでも利用可
能
○ 追加でライブラリをインストールする必要
あり
はんなりPython #52 ゆるいLT会
3. ラッパー関数を作って間接的に
モックする
○ 責務を明示的に分離できる
○ 関数呼び出しを行うコストがかかる
4. 関数を依存性注入できる設計で
作る
○ 実装への変更が小さい
○ インターフェースが複雑化
datetime.datetime.now()をモックする方法
1. pytestでテストを記述する
○ monkeypatchでモック化が容易
○ テストツールを移行する必要あり
2. time-machineライブラリを使う
○ Python標準のユニットテストでも利用可
能
○ 追加でライブラリをインストールする必要
あり
はんなりPython #52 ゆるいLT会
3. ラッパー関数を作って間接的に
モックする
○ 責務を明示的に分離できる
○ 関数呼び出しを行うコストがかかる
4. 関数を依存性注入できる設計で
作る
○ 実装への変更が小さい
○ インターフェースが複雑化
datetime.datetime.now()をモックする方法
はんなりPython #52 ゆるいLT会
変更 標準のテストツー
ルでの実行
別ライブラリ
のインストール
実装の変更
1 pytestでテストを記述する 不可 あり (pytest) なし
2 time-machineライブラリを使う 可能 あり
(time-machine)
なし
3 ラッパー関数を作って間接的に
モックする
可能 なし 大きい(?)
4 関数を依存性注入できる設計で作
る
可能 なし 小さい(?)
ありがとうございました

Weitere ähnliche Inhalte

Was ist angesagt?

kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)NTT DATA Technology & Innovation
 
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
 運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話 運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話KLab Inc. / Tech
 
オープンソースBotフレームワークではじめるChatOps
オープンソースBotフレームワークではじめるChatOpsオープンソースBotフレームワークではじめるChatOps
オープンソースBotフレームワークではじめるChatOpsAkihiko Horiuchi
 
Ormとの付き合い方
Ormとの付き合い方Ormとの付き合い方
Ormとの付き合い方豊明 尾古
 
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜Daiki Kawanuma
 
パタン・ランゲージを用いてスクラムの本質をひもとく
パタン・ランゲージを用いてスクラムの本質をひもとくパタン・ランゲージを用いてスクラムの本質をひもとく
パタン・ランゲージを用いてスクラムの本質をひもとくMinoru Yokomichi
 
リーンスタートアップ、アジャイル開発導入事例
リーンスタートアップ、アジャイル開発導入事例リーンスタートアップ、アジャイル開発導入事例
リーンスタートアップ、アジャイル開発導入事例Arata Fujimura
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編hdais
 
プロフェッショナルSSL/TLS 1.2章
プロフェッショナルSSL/TLS 1.2章プロフェッショナルSSL/TLS 1.2章
プロフェッショナルSSL/TLS 1.2章MITSUNARI Shigeo
 
AWS設計ガイドラインで取り組むクラウドシフト
AWS設計ガイドラインで取り組むクラウドシフトAWS設計ガイドラインで取り組むクラウドシフト
AWS設計ガイドラインで取り組むクラウドシフトTrainocate Japan, Ltd.
 
とある診断員とAWS
とある診断員とAWSとある診断員とAWS
とある診断員とAWSzaki4649
 
POWA50 - Power Apps と Power Automate の大規模な管理とサポート
POWA50 - Power Apps と Power Automate の大規模な管理とサポートPOWA50 - Power Apps と Power Automate の大規模な管理とサポート
POWA50 - Power Apps と Power Automate の大規模な管理とサポートTaiki Yoshida
 
JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話disc99_
 
AbemaTVの動画配信を支えるサーバーサイドシステム
AbemaTVの動画配信を支えるサーバーサイドシステムAbemaTVの動画配信を支えるサーバーサイドシステム
AbemaTVの動画配信を支えるサーバーサイドシステムyuichiro nakazawa
 
DeepSecurityでシステムを守る運用を幾つか
DeepSecurityでシステムを守る運用を幾つかDeepSecurityでシステムを守る運用を幾つか
DeepSecurityでシステムを守る運用を幾つかHirokazu Yoshida
 
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証
QAアーキテクチャの設計による説明責任の高いテスト・品質保証QAアーキテクチャの設計による説明責任の高いテスト・品質保証
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証Yasuharu Nishi
 
アジャイル開発のストーリーをGherkin記法で作成
アジャイル開発のストーリーをGherkin記法で作成アジャイル開発のストーリーをGherkin記法で作成
アジャイル開発のストーリーをGherkin記法で作成Shinya Nakajima
 
講演資料: コスト最適なプライベートCDNを「NGINX」で実現するWeb最適化セミナー
講演資料: コスト最適なプライベートCDNを「NGINX」で実現するWeb最適化セミナー講演資料: コスト最適なプライベートCDNを「NGINX」で実現するWeb最適化セミナー
講演資料: コスト最適なプライベートCDNを「NGINX」で実現するWeb最適化セミナーNGINX, Inc.
 

Was ist angesagt? (20)

kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
 
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
 運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話 運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
運用中の大規模オンラインゲームで 8年ぶりにPHPバージョンアップをした話
 
オープンソースBotフレームワークではじめるChatOps
オープンソースBotフレームワークではじめるChatOpsオープンソースBotフレームワークではじめるChatOps
オープンソースBotフレームワークではじめるChatOps
 
Ormとの付き合い方
Ormとの付き合い方Ormとの付き合い方
Ormとの付き合い方
 
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
 
パタン・ランゲージを用いてスクラムの本質をひもとく
パタン・ランゲージを用いてスクラムの本質をひもとくパタン・ランゲージを用いてスクラムの本質をひもとく
パタン・ランゲージを用いてスクラムの本質をひもとく
 
リーンスタートアップ、アジャイル開発導入事例
リーンスタートアップ、アジャイル開発導入事例リーンスタートアップ、アジャイル開発導入事例
リーンスタートアップ、アジャイル開発導入事例
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
プロフェッショナルSSL/TLS 1.2章
プロフェッショナルSSL/TLS 1.2章プロフェッショナルSSL/TLS 1.2章
プロフェッショナルSSL/TLS 1.2章
 
AWS設計ガイドラインで取り組むクラウドシフト
AWS設計ガイドラインで取り組むクラウドシフトAWS設計ガイドラインで取り組むクラウドシフト
AWS設計ガイドラインで取り組むクラウドシフト
 
とある診断員とAWS
とある診断員とAWSとある診断員とAWS
とある診断員とAWS
 
POWA50 - Power Apps と Power Automate の大規模な管理とサポート
POWA50 - Power Apps と Power Automate の大規模な管理とサポートPOWA50 - Power Apps と Power Automate の大規模な管理とサポート
POWA50 - Power Apps と Power Automate の大規模な管理とサポート
 
JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話
 
AbemaTVの動画配信を支えるサーバーサイドシステム
AbemaTVの動画配信を支えるサーバーサイドシステムAbemaTVの動画配信を支えるサーバーサイドシステム
AbemaTVの動画配信を支えるサーバーサイドシステム
 
DeepSecurityでシステムを守る運用を幾つか
DeepSecurityでシステムを守る運用を幾つかDeepSecurityでシステムを守る運用を幾つか
DeepSecurityでシステムを守る運用を幾つか
 
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証
QAアーキテクチャの設計による説明責任の高いテスト・品質保証QAアーキテクチャの設計による説明責任の高いテスト・品質保証
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証
 
アジャイル開発のストーリーをGherkin記法で作成
アジャイル開発のストーリーをGherkin記法で作成アジャイル開発のストーリーをGherkin記法で作成
アジャイル開発のストーリーをGherkin記法で作成
 
講演資料: コスト最適なプライベートCDNを「NGINX」で実現するWeb最適化セミナー
講演資料: コスト最適なプライベートCDNを「NGINX」で実現するWeb最適化セミナー講演資料: コスト最適なプライベートCDNを「NGINX」で実現するWeb最適化セミナー
講演資料: コスト最適なプライベートCDNを「NGINX」で実現するWeb最適化セミナー
 

Ähnlich wie datetime.datetime.now()をモックしたい.pdf

hktstudy 201206 「私だってやれば出来る子!♥Multi-Mechanize♥」
hktstudy 201206 「私だってやれば出来る子!♥Multi-Mechanize♥」hktstudy 201206 「私だってやれば出来る子!♥Multi-Mechanize♥」
hktstudy 201206 「私だってやれば出来る子!♥Multi-Mechanize♥」Aya Komuro
 
Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCIJenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCITakafumi Ikeda
 
究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)fumoto kazuhiro
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)Takuya Tsuchida
 
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3Tomoyuki Sato
 
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?Shinichi Hirauchi
 
【プログラミング教室】テキスト
【プログラミング教室】テキスト【プログラミング教室】テキスト
【プログラミング教室】テキストManabu Ikarashi
 
大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EETaiichilow Nagase
 
po-1. プログラミング入門
po-1. プログラミング入門po-1. プログラミング入門
po-1. プログラミング入門kunihikokaneko1
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaYuta Kawadai
 
Getting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitGetting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitAtsuhiro Kubo
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodAtsuhiro Kubo
 
はじめてのPython
はじめてのPythonはじめてのPython
はじめてのPythonKatsumi Honda
 
Vue.js でタイマーを作る
Vue.js でタイマーを作るVue.js でタイマーを作る
Vue.js でタイマーを作るmizdra
 
書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト書こう! 使おう! 単体テスト
書こう! 使おう! 単体テストryohji ikebe
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話Hisateru Tanaka
 
ソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストToru Tamaki
 
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Yoshifumi Kawai
 

Ähnlich wie datetime.datetime.now()をモックしたい.pdf (20)

hktstudy 201206 「私だってやれば出来る子!♥Multi-Mechanize♥」
hktstudy 201206 「私だってやれば出来る子!♥Multi-Mechanize♥」hktstudy 201206 「私だってやれば出来る子!♥Multi-Mechanize♥」
hktstudy 201206 「私だってやれば出来る子!♥Multi-Mechanize♥」
 
Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCIJenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCI
 
究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
 
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3
 
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
 
【プログラミング教室】テキスト
【プログラミング教室】テキスト【プログラミング教室】テキスト
【プログラミング教室】テキスト
 
wankuma #28
wankuma #28wankuma #28
wankuma #28
 
大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE
 
po-1. プログラミング入門
po-1. プログラミング入門po-1. プログラミング入門
po-1. プログラミング入門
 
PHP agile test tips
PHP agile test tipsPHP agile test tips
PHP agile test tips
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for Java
 
Getting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnitGetting Started with Testing using PHPUnit
Getting Started with Testing using PHPUnit
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGood
 
はじめてのPython
はじめてのPythonはじめてのPython
はじめてのPython
 
Vue.js でタイマーを作る
Vue.js でタイマーを作るVue.js でタイマーを作る
Vue.js でタイマーを作る
 
書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話
 
ソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テスト
 
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
 

Kürzlich hochgeladen

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 

Kürzlich hochgeladen (12)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

datetime.datetime.now()をモックしたい.pdf