Fakultas Ilmu Komputer UI

Commit 55893d8f authored by Ahmad Yazid's avatar Ahmad Yazid
Browse files

Testinggoat/ch20.1

parent 91f64b2b
......@@ -224,3 +224,14 @@ Berdasarkan buku testing goat SPIKING merupakan sebuah hal yang kita lakukan yan
Manual mocking atau monkey patching adalah metode yang membuat kita melakukan mocking secara manual jadi kita harus menyediakan semua object yang kita ingin virtualisasikan "MOCK" secara sendiri jadi kita harus membuat nya sendiri.
Mock libarary yang ada di python sejak python 3.3 (menurut parcival pada testing goat) ialah sebuah libarary yang bisa membantu kita pada proses membuat mock tersebut jadi object yang kita panggil tidak akan object sebenernya melainkan sebuah mock alias sebuah object yang di pakai khusus untuk testing dan tidak tergaet dengan objek yang asli yang ada.
# MANUAL MOCKING DAN MOCK LIBRARY
Manual mocking atau monkey patching adalah metode yang membuat kita melakukan mocking secara manual jadi kita harus menyediakan semua object yang kita ingin virtualisasikan "MOCK" secara sendiri jadi kita harus membuat nya sendiri.
Mock libarary yang ada di python sejak python 3.3 (menurut parcival pada testing goat) ialah sebuah libarary yang bisa membantu kita pada proses membuat mock tersebut jadi object yang kita panggil tidak akan object sebenernya melainkan sebuah mock alias sebuah object yang di pakai khusus untuk testing dan tidak tergaet dengan objek yang asli yang ada.
# TEST FIXTURE , DECORATORS for Explicit wait
Untuk kali ini saya menambahkan Decorators serta FT namun masih error dikarenakan ada error pada django saya dan untuk sekarang baru sampai sini saya akan cari lagi pembenarannya dan membenarkan untuk week depan
......@@ -30,3 +30,46 @@ class FunctionalTest(StaticLiveServerTestCase):
if time.time() - start_time > MAX_WAIT:
raise e
time.sleep(0.5)
def wait_to_be_logged_in(self, email):
self.wait_for(
lambda: self.browser.find_element_by_link_text('Log out')
)
navbar = self.browser.find_element_by_css_selector('.navbar')
self.assertIn(email, navbar.text)
def wait_to_be_logged_out(self, email):
self.wait_for(
lambda: self.browser.find_element_by_name('email')
)
navbar = self.browser.find_element_by_css_selector('.navbar')
self.assertNotIn(email, navbar.text)
@wait
def wait_for_row_in_list_table(self, row_text):
start_time = time.time()
while True:
try:
table = self.browser.find_element_by_id('id_list_table')
rows = table.find_elements_by_tag_name('tr')
self.assertIn(row_text, [row.text for row in rows])
return
except (AssertionError, WebDriverException) as e:
if time.time() - start_time > MAX_WAIT:
raise e
time.sleep(0.5)
def wait_for(self, fn):
return fn()
@wait
def wait_to_be_logged_in(self, email):
self.browser.find_element_by_link_text('Log out')
@wait
def wait_to_be_logged_out(self, email):
self.wait_for(
lambda: self.browser.find_element_by_name('email')
)
navbar = self.browser.find_element_by_css_selector('.navbar')
self.assertNotIn(email, navbar.text)
......@@ -45,4 +45,3 @@ class LoginTest(FunctionalTest):
lambda: self.browser.find_element_by_link_text('Log out')
)
navbar = self.browser.find_element_by_css_selector('.navbar')
self.assertIn(TEST_EMAIL, navbar.text)
from django.conf import settings
from django.contrib.auth import BACKEND_SESSION_KEY, SESSION_KEY, get_user_model
from django.contrib.sessions.backends.db import SessionStore
from .base import FunctionalTest
User = get_user_model()
class MyListsTest(FunctionalTest):
def create_pre_authenticated_session(self, email):
user = User.objects.create(email=email)
session = SessionStore()
session[SESSION_KEY] = user.pk
session[BACKEND_SESSION_KEY] = settings.AUTHENTICATION_BACKENDS[0]
session.save()
# to set a cookie we need to first visit the domain.
# 404 pages load the quickest!
self.browser.get(self.live_server_url + "/404_no_such_url/")
self.browser.add_cookie(dict(
name=settings.SESSION_COOKIE_NAME,
value=session.session_key,
path='/',
))
Markdown is supported
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