66 lines
2.8 KiB
Python
66 lines
2.8 KiB
Python
import random
|
|
import sys
|
|
from pathlib import Path
|
|
import numpy as np
|
|
import subprocess
|
|
import importlib
|
|
import codewars_test
|
|
import pandas as pd
|
|
|
|
# Update paths and filename
|
|
path_answer = "/content/" # changed
|
|
filename = "answer_chapter2_experiments3.py" # changed
|
|
|
|
# Import the answer module
|
|
pc = importlib.import_module(filename[:-3], ".")
|
|
cmd = subprocess.run([sys.executable, f"{path_answer}{filename}"], capture_output=True) # changed
|
|
|
|
|
|
@codewars_test.describe("Chapter 2 | Experiments 3")
|
|
def fixed_tests():
|
|
|
|
@codewars_test.it("1. Loading Data Test")
|
|
def test_load_data():
|
|
print("========================================================================")
|
|
# Assuming expected columns are "Customer ID", "Age" and "Total Spent (USD)"
|
|
expected_columns = ['Duration', 'Pulse', 'Maxpulse', 'Calories']
|
|
try:
|
|
codewars_test.assert_equals(list(pc.load_data().columns), expected_columns, "====> The URL of the dataset used is not appropriate; the columns in the dataset are different.")
|
|
except Exception as e:
|
|
codewars_test.fail(f"====> Error loading data; There is typo in the code: {str(e)}")
|
|
|
|
expected_rows = 169
|
|
try:
|
|
codewars_test.assert_equals(len(pc.load_data()), expected_rows, "====> Please check the URL used again; the number of data points in the dataset is different.")
|
|
except Exception as e:
|
|
codewars_test.fail(f"====> Error checking row count; There is typo in the code: {str(e)}")
|
|
|
|
print("")
|
|
|
|
|
|
# @codewars_test.it("2. Test Print Total Nilai yang Hilang")
|
|
# def test_total_revenue():
|
|
# print("========================================================================")
|
|
# output_lines = cmd.stdout.decode().splitlines()
|
|
# codewars_test.assert_equals(bool(output_lines), True, '====> Error :Tidak Menampilkan total nilai hilang print()')
|
|
|
|
|
|
@codewars_test.it("2. Filling The Missing Value Test")
|
|
def test_no_missing_values():
|
|
print("========================================================================")
|
|
|
|
# Replace 'Duration', 'Pulse', 'Maxpulse', 'Calories' with your desired columns
|
|
expected_columns_no_null = ['Duration', 'Pulse', 'Maxpulse', 'Calories']
|
|
try:
|
|
for col in expected_columns_no_null:
|
|
codewars_test.assert_equals(pc.updated_data()[col].isnull().sum(), 0, f"Column '{col}' should not have missing values")
|
|
except Exception as e:
|
|
codewars_test.fail(f"====> Error in update_data(); Typo in the function code: {str(e)}")
|
|
except NameError as e:
|
|
codewars_test.fail(f"====> Error in update_data(); Typo in the function code: {str(e)}")
|
|
except SyntaxError as e:
|
|
codewars_test.fail(f"====> Error in update_data(); Typo in the function code: {str(e)}")
|
|
|
|
print("")
|
|
|