雑念ストレージ

プログラミング関連のメモとか

仕事

【Python】mock_openで複数のファイルの読み書きをMock化する

前にmock_openを使って1つのファイルの読み書きをMock化する方法を書いた。 複数のファイルの読み書きをMock化する場合は少しコツがあったので、メモしておく。 複数ファイルの読み込みをMock化する場合 import unittest from unittest.mock import MagicMoc…

【Python】MagicMockの使い方メモ2 - ユニットテストでの使い方とpatch

ユニットテストでは、開発環境から呼び出せない処理はモックに差し替えてテストしたい。 たとえば、外部のAPIの呼び出しやファイルの読み書きなどをモックにすることが多い。 モックにするやり方が色々あるので、簡単にまとめる。 インスタンスのメソッドをM…

【Python】MagicMockの使い方メモ1 - MagicMockとは

普段なんとなく使っていたMagicMockについて調べ直したのでまとめる。 MagicMockとは いきなりうまく説明できないけど、定義していないメソッドでも呼べてしまう、ぐにゃぐにゃの粘土みたいなイメージ、、 m = MagicMock() func1_result = m.func1() print(f…

【Python】mock_openでファイルの読み書きをMock化する

ファイルの読み書きをするプログラムをテストするとき、実際にファイルを用意するのは面倒。 ファイルの読み書きはMock化したいが、そんなときはPythonが公式で用意してくれているmock_open関数が便利。 たとえば、以下のようなプログラムをテストしたいとす…

【PyCharm】選択中の変数のハイライト色を変える

PyCharmを使うときに設定しておきたい点。 選択中の変数をハイライトする色を変える。 設定変更前 dataを選択しているのだけど、色が地味過ぎて分かりづらい、、 設定変更後 これなら見やすい。 Editor > Color Scheme > General にある、Code > Identifier …

【Django】Factory Boyで、カテゴリを外部テーブルに持つようなレコードを簡単に作成する

以下のような、「本」と「本の種別(マスターデータ)」を表すModelがあるとする。 class BookCategory(models.Model): name = models.TextField() class Book(models.Model): name = models.TextField() book_category = models.ForeignKey(BookCategory, on_…

【Git】間違えてMergeしたプルリクをRevertしたあと、もう一度Mergeしたいとき

mainブランチにプルリクをMergeしたあと、一旦Revertで差し戻してから、しばらくして再度Mergeしたいときがある。 ただ、何も考えずに再度Mergeしようとしてもうまくいかない。 上の図であれば、再度マージしてもコミット3とコミット4はmainブランチに反映さ…

【Mermaid】Web上でMermaidを動かせる、Mermaid Live Editor

MermaidをWeb上で使えるMermaid Live Editorというサイトがある。 機密性を気にしなくていいような図なら、ここでササッと作ってもいいかもしれない。 個人的に、普段はPlantUMLをDockerで立てて使っている。 ただ、Gitのリビジョングラフの絵は、Mermaidの…

【Python】Enumで処理を分岐するなら、デフォルトの分岐はエラーにしておいたほうがいい気がする

Pythonで↓のようにEnumを分岐する処理を書いてみた。 from blood_types import BloodTypes def uranai(blood_type: BloodTypes): """血液型占い""" match blood_type: case BloodTypes.A: print("大吉") case BloodTypes.B: print("中吉") case BloodTypes.O…

【Python】Python3.10からmatch文が追加されて、Enumを if elif しなくてよくなった

Python3.10からmatch文が追加されたそう。 今までは、Enumを処理するにも↓のようにif elif を繰り返して書いていたのが from blood_types import BloodTypes def uranai(blood_type: BloodTypes): """血液型占い""" if blood_type == BloodTypes.A: print("…

【Python】auto()関数でEnumのvalueを自動設定する

PythonでEnumを使おうとすると、各項目にvalueを設定する必要がある。 ↓こんな感じ from enum import Enum class BloodTypes(Enum): A = "a" B = "b" O = "o" AB = "ab" JavaやC#から移ってきた人間には違和感があったけど、auto()関数を使えば、いちいち値…

【Postgresql】generate_series関数を集計に使用する

前回、generate_series関数でダミーデータを作る方法を書きました。 uranaga512.hatenablog.com generate_series関数はちょっとしたデータの集計にも使えるので、今回はそれについて書きます。 日毎のレコード数の集計 例えば以下のようなテーブルがあったと…

【Postgresql】generate_series関数でダミーデータを作る

generate_seriesという関数がダミーデータを作るのに便利で、度々使ってます。 例えば以下のような感じで、簡単に行を生成できます。 SELECT generate_series(1, 10, 1); /* 1から10まで1ずつ増やす */ /* generate_series ----------------- 1 2 3 4 5 6 7 …