pytestのparametrizeと仲良くなりたくて

はじめに

何事もまずは標準装備の機能からちゃんと使えるようになろうと思って、PythonのUnittestをちょくちょく触っていたんですが、案件ではpytestを使っています。pytestの書き方にも慣れてきて、毎日読んだり書いたりしていますが、受け身一方で身の回りにあるコード例しか知らない。これはあんまり良くないと思って、ちゃんと自力でディグって使えそうなコマンドとか機能を発掘しようというと思い立ちました。あと、pytest.Parameterizeと仲良くなりたくて。Parameterizeが本題です。

続きを読む

DjangoのORMで日付データを扱っていたら錯乱した話

(当たり前のようにDjangoの話ですが)仕事で日付データを扱った実装をしていた時のこと、混乱状態に陥ったので次に備えて自分の中で何が起きていたかを振り返ります。仕事の内容は書けないので、今回は架空のカレンダーサービスを例に話をすすめます。hogehoge calendar。

カレンダーのサービスに必要不可欠な要素といえば色々ありますが、その中の1つに「予定」がありますね。「どこ」で、「だれ」と、「いつ」会うかといった情報が設定できるべきです。その中の「いつ」は、「予定の開始日時」と「予定の終了日時」を設定できるようにすべきでしょう。したがってDjangoで以下のようなフィールドをhogehoge calendarの Event モデルに実装します。

start_period = models.DateTimeField("予定開始日時", null=True)
end_period = models.DateTimeField("予定終了日時", null=True)

これで予定開始日時と予定終了日時を設定できます。やったね!偉大な一歩!

続きを読む

Cerberus入門!ばりばりバリデーションしよう!

f:id:kai1233:20181218224628p:plain

この記事は BeProud Advent Calendar 2018 - Adventar の18日目の記事です。

Cerberus とは

ケルベロスとは本来、ギリシャ神話の地獄の神ハーデスのペットのわんわんであり、地獄の入り口にいる番犬のことだそうです。Cerberus はその名の通り、番犬のようにユーザからのリクエストにバリデーションをかけて不正なリクエストを弾いてくれるPythonのライブラリです。公式ページいわく、パワフルでありながらもシンプルで軽量なバリデーションライブラリだそうです。しかも簡単に拡張することができるそうです。いま仕事で使う機会があり、少しずつ使い方を覚えています。せっかくなので今回基本的な機能をやさしくまとめてみようと思います。

続きを読む

むむむと思ったAPI制作

ここ二週間くらいなんやかんやでブログ書いてなかったんですが、久しぶりに書きます。最近はお仕事でAPIを作っていて、その作業中に不思議なバグに出会ったので記録します。

続きを読む