code: def test_iloc_setitem_chained_assignment(self, using_copy_on_write):
      # GH#3970
      with option_context("chained_assignment", None):
          df = DataFrame({"aa": range(5), "bb": [2.2] * 5})
          df["cc"] = 0.0
  
          ck = [True] * len(df)
  
          with tm.raises_chained_assignment_error():
              df["bb"].iloc[0] = 0.13
  
          # GH#3970 this lookup used to break the chained setting to 0.15
          df.iloc[ck]
  
          with tm.raises_chained_assignment_error():
              df["bb"].iloc[0] = 0.15
  
          if not using_copy_on_write:
              assert df["bb"].iloc[0] == 0.15
          else:
              assert df["bb"].iloc[0] == 2.2
  
imports: from string import ascii_letters
  import numpy
  import pytest
  from pandas.errors import SettingWithCopyError, SettingWithCopyWarning
  import pandas
  from pandas import DataFrame, Index, Series, Timestamp, date_range, option_context
  import pandas._testing
label_desc: Use image node_id 24 for calling the TestChaining obj's underlying member method code with example usage: obj.test_iloc_setitem_chained_assignment(using_copy_on_write) without return types