Fakultas Ilmu Komputer UI

Commit e3301ff8 authored by Rani Lasma Uli's avatar Rani Lasma Uli
Browse files

revise README

parent 49ebc439
Pipeline #21532 failed with stages
in 1 minute and 40 seconds
......@@ -25,21 +25,21 @@ pip freeze > requirements.txt
This section contains exercise 3 details which refer to the obeythetestinggoat chapter 6.
#### Steps I've been through
1. Refactoring
1. Refactoring <br>
sebelum mengimplementasikan `test isolation` dilakukan pemindahan file functional_tests.py ke dalam folder functional_tests dan mengubah nama file menjadi tests.py (functional_tests/tests.py). Django membutuhkan __init__.py untuk menjadi Python package yang valid, sehingga perlu ditambahkan file functional_tests/__init__.py. Hal ini berguna untuk pemanggilan functional_tests yang lebih mudah menjadi --> `python manage.py test functional_tests`
2. Using Python Test runner
2. Using Python Test runner <br>
Untuk menggunakan Python Test runner class yang digunakan pada functional_tests/tests.py diubah dari UnitTest menjadi LiveServerTestCase. Untuk kode tes yang lebih baik, URL tidak perlu lagi menggunakan *hard code* untuk `localhost:8000`. LiveServerTestCase menyediakan atribut bawaan untuk URL app yang akan diuji, yaitu method *live_server_url*. Atribut tersebut akan dipanggil menjadi `self.live_server_url`.
3. Explicit to Implicit waiting
3. Explicit to Implicit waiting <br>
Pada chapter 5, functional_tests.py menunggu selama 1 detik untuk output data. Namun pada chapter 6 ini, data akan dipanggil sampai hasilnya diperoleh. Waktu tunggu maksimal adalah 10 detik. Kode yang kali ini lebih efektif karena waktu tunggu untuk hasil lebih dinamis (menyesuaikan lama waktu elemen diperoleh).
*Where the Test Isolation implemented?*
*Where the Test Isolation implemented?* <br>
Test Isolation sendiri adalah mengisolasi setiap tes untuk menghilangkan ketergantungannya satu sama lain antar tes. Pada awalnya kita menjalankan functional_tests.py memengaruhi database `item` yang ada. Hal ini tidak baik karena akan mengganggu nilai yang akan diuji oleh tes yang lain. Untuk mempersiapkan database setiap test method dapat menggunakan `setUp` dan `tearDown` method. Selain dari cara itu, untuk Django 1.4++ disediakan class LiveServerTestCase yang secara otomatis menyediakan test database.
#### Before 'n After
1. `localhost:8000` or any hard code URL (staging URL) --> self.live_server_url
1. `localhost:8000` or any hard code URL (staging URL) --> self.live_server_url <br>
- Before
```python
self.browser.get('localhost:8000' + TO_DO_LIST_PATH)
......@@ -49,8 +49,8 @@ self.browser.get('localhost:8000' + TO_DO_LIST_PATH)
```python
self.browser.get(self.live_server_url + TO_DO_LIST_PATH)
```
2. Add a helper method which will be responsible for the `implicit waiting`, also define maximum time as the waiting time limit
--> add wait_for_row_in_list_table method
2. Add a helper method which will be responsible for the `implicit waiting`, also define maximum time as the waiting time limit <br>
solution: add wait_for_row_in_list_table method
- After
```python
# GLOBAL VARIABLE IN THIS CLASS
......@@ -68,7 +68,7 @@ MAX_WAIT = 10
raise e
time.sleep(0.5)
```
3. Call the helper method
3. Call the helper method <br>
- Before
```python
def test_can_start_a_list_and_retrieve_it_later(self):
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment