-[Why Need Test Organization](#why-need-test-organization)
-[Mutation Testing](#mutation-testing)
-[Mocking Manually vs Library](#mocking-manually-vs-library)
-[Ch 20 vs Ch 18](#test-fixture-and-decorator)
-[URL](#url)
-[Install Modules](#install-modules)
...
...
@@ -309,4 +310,14 @@ Also, using library for mocking is pretty simple - in this case just using @patc
>
> Mocking with Library:
> 1. Readable code, no object creation in testing class
> 2. Fully-package! No need to write the construct the object (fake) to mock real object
> 2. Fully-package! No need to write the constructor of the object (fake) to mock real object
#### Test Fixture and Decorator
Perbedaan antara Ch 20 vs Ch 18:
- Pada chapter 20, saya menggunakan method `create-pre-authenticated` yang berfungsi untuk membuat session. Session adalah cara browser untuk mengenali request HTTP yang dimana memiliki sifat stateless.
- Adanya penambahan `@wait` yang bertingkah laku sebagai decorator. Kode pada file `base.py` memiliki sejumlah pemanggilan fungsi `self.wait_for...` dimana pada fungsi-fungsi tersebut menggunakan fungsi `wait_for`. Melihat hal ini, refactor dapat dilakukan dengan membuat 1 fungsi bernama `wait`. Khusus untuk latihan kali ini, fungsi `wait` dibuat agar dapat diakses sebagai decorator (menerima fungsi sebagai parameter).
> Mengapa kode pada ch 20 lebih baik dari kode ch 18?
- Refactor sebuag fungsi yang sering dipakai menjadi fungsi yang dapat diakses sebagai decorator membuat kode menjadi lebih readable dan ringkas.
- Penggunaan session pada authentication itu adalah sebuah keharusan untuk HTTP dengan sifatnya yang stateless. FungsionalTest kali ini menjadi lebih sesuai dengan rekayasa penggunaan browser. Di tambah lagi, dengan adanya session kita dapat melayani user secara spesifik dan data pribadi (yang tidak terlalu penting namun sangat memungkinkan untuk dipakai berkali-kali) dapat disimpan pada session.