If you run unit testing, you will receive an error due to the incorrect data type. The solution here would be to change all string data types to a bytes data type. Then, owing to a deprecation warning, you should change the way you call methods in a smart contract.
Ultimately, your unit test, which is located in tests/test_greeter.py, should look like this:
def test_greeter(chain):
greeter, _ = chain.provider.get_or_deploy_contract('Greeter')
greeting = greeter.functions.greet().call()
assert greeting == b'Hello'
def test_custom_greeting(chain):
greeter, _ = chain.provider.get_or_deploy_contract('Greeter')
set_txn_hash = greeter.functions.setGreeting(b'Guten Tag').transact()
chain.wait.for_receipt(set_txn_hash)
greeting = greeter.functions.greet().call()
assert greeting == b'Guten Tag...